记录编号 543924 评测结果 AAAAAAAAAA
题目名称 没有上司的舞会 最终得分 100
用户昵称 Gravatar退堂鼓表演艺术家 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2019-10-11 19:06:35 内存使用 0.00 MiB
显示代码纯文本
    #include<bits/stdc++.h>
    using namespace std;
    const int N=6001;
    int n,root=1,father[N];
    vector<int> tree[N];
    int happy[N],dp[N][2];
    void dfs(int u)
    {
    	dp[u][0]=0;
    	dp[u][1]=happy[u];
    	for(int i=0;i<tree[u].size();i++)
    	{
    		int v=tree[u][i];
    		dfs(v);
    		dp[u][1]+=dp[v][0];
    		dp[u][0]+=max(dp[v][0],dp[v][1]);
    	}
    }
    int sdd()
    {
    	freopen("partyy.in","r",stdin);
    	freopen("partyy.out","w",stdout);
    	memset(father,-1,sizeof(father));
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    		scanf("%d",&happy[i]);
    	for(int i=0;i<n;i++)
    	{
    		int x,y;
    		scanf("%d%d",&x,&y);
    		if(x!=0&&y!=0)
    		{
    			tree[y].push_back(x);
    			father[x]=y;
    		}
    	}
    	while(father[root]!=-1)
    		root=father[root];
    	dfs(root);
    	cout<<max(dp[root][0],dp[root][1]);
    	return 0;
    }
    int ff=sdd();
    int main()
    {
    	;
    }