zoukankan      html  css  js  c++  java
  • codevs 1380 没有上司的舞会

    基本树型dp。dp[i][j]中i表示某人,j表示该人来了没来。转移方程见程序。

    注意预处理:先初始化所有dp[i][1]为给定的权值。先将没有下属的人进队。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    int n,r[6005],fath[6005],num[6005];
    int dp[6005][3];
    void bfs()
    {
    	queue <int> q;
    	for (int i=1;i<=n;i++)
    		if (num[i]==0)
    			q.push(i);
    	while (!q.empty())
    	{
    		int head=q.front();
    		q.pop();
    		dp[fath[head]][0]+=max(dp[head][0],dp[head][1]);
    		dp[fath[head]][1]+=dp[head][0];
    		num[fath[head]]--;
    		if (num[fath[head]]==0)
    			q.push(fath[head]);
    	}
    }
    int main()
    {
    	memset(num,0,sizeof(num));
    	scanf("%d",&n);
    	for (int i=1;i<=n;i++)
    	{
    		scanf("%d",&r[i]);
    		dp[i][1]=r[i];
    	}
    	for (int i=1;i<=n-1;i++)
    	{
    		int x,y;
    		scanf("%d%d",&x,&y);
    		fath[x]=y;
    		num[y]++;
    	}
    	int yjq_naive,cx_ak;
    	scanf("%d%d",&yjq_naive,&cx_ak);
    	bfs();
    	int maxn=0;
    	for (int i=1;i<=n;i++)
    		for (int j=0;j<=1;j++)
    			maxn=max(maxn,dp[i][j]);
    	printf("%d
    ",maxn);
    	return 0;
    }
  • 相关阅读:
    Fidder
    常见正则表达式使用
    HTML5 Boilerplate
    微信公众号开发--微信机器人
    sublime text插件推荐
    个人博客开发-笔记
    css之图像替换
    关于浮动与清除浮动
    css定位机制
    Java 集合类实现原理
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5106658.html
Copyright © 2011-2022 走看看