求助
  • 板块学术版
  • 楼主苏22
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/2/21 12:16
  • 上次更新2023/10/28 08:00:47
查看原帖
求助
513253
苏22楼主2022/2/21 12:16

P1352 没有上司的舞会

不知道为啥输出不了

#include<cstdio>
#include<algorithm>
using namespace std;
int cnt,n,r[6000],vis[6000],f[6000][2],to[6000],nxt[6000],head[6000],t;
void add(int u,int v)
{
	cnt++;
	to[cnt]=v;
	nxt[cnt]=head[u];
	head[u]=cnt;
}
void dfs(int x)
{
	
	for(int i=head[x];i;i=nxt[i])
	{
		int xx=nxt[i];
		dfs(xx);
		f[x][0]+=max(f[xx][0],f[xx][1]);
		f[x][1]+=f[xx][0]; 
	}
	f[x][1]+=r[x];
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&r[i]);
	}
	for(int i=1;i<=n-1;i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		vis[a]=1;
		if(a!=0&&b!=0)
			add(b,a);
	}
	for(int i=1;i<=n;i++)
	{
		if(vis[i]==0)
		{
			t=i;
			dfs(t);
			break;
		} 
	}
	printf("%d",max(f[t][0],f[t][1]));
}
2022/2/21 12:16
加载中...