为什么第二个点会mle?谢谢!
查看原帖
为什么第二个点会mle?谢谢!
1151746
wangchenwangchen楼主2024/1/27 22:44
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int n;
int out[6010];
struct ff{
	int cnt;
	int next[6010];
}nod[6010];
int flag;
int fff[6010][2];
void search(int x)
{
	for(int i=0;i<nod[x].cnt;i++){
		search(nod[x].next[i]);
		fff[x][1]=max(fff[x][1],fff[nod[x].next[i]][0]+fff[x][1]);
		int kk=max(fff[nod[x].next[i]][0],fff[nod[x].next[i]][1]);
		fff[x][0]=max(max(fff[x][0],fff[x][0]+kk),kk);
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&fff[i][1]);
	for(int i=1;i<=n;i++)nod[i].cnt=0;
	for(int i=1;i<n;i++)
	{
		int a,b;
		scanf("%d %d",&a,&b);
		nod[b].next[nod[b].cnt]=a;
		nod[b].cnt++;
		out[a]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(!out[i])
		{
			flag=i;
			break;
		}
	}
	search(flag);
	printf("%d",max(max(fff[flag][0],fff[flag][1]),0));
	return 0;
}
2024/1/27 22:44
加载中...