编译错误,为什么呢?
查看原帖
编译错误,为什么呢?
526235
mmdxm楼主2022/8/12 11:21
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int z[6001],f[6001][6001],cnt,v[6001],next[6001],poor[6001],n; bool q[6001];
void sta(int father,int son){
	cnt++;
	v[cnt]=son;
	next[cnt]=poor[father];
	poor[father]=cnt;
}
int DP(int node){
	int i;
	for(i=poor[node];i!=0;i=next[i]){
		DP(v[i]);
	}
	for(i=poor[node];i!=0;i=next[i]){
		f[node][0]+=max(f[v[i]][1],f[v[i]][0]);
		f[node][1]+=f[v[i]][0]; 
	}
	f[node][1]+=z[node];
}
int main(){
	int i,New,l,r;
	scanf("%d%d",&n);
	for(i=1;i<=n;i++) scanf("%d",&z[i]);
	for(i=1;i<n;i++){
		scanf("%d%d",&l,&r);
		q[l]=true;
		sta(r,l);
	}
	for(i=1;i<=n;i++)
	if(q[i]==false){
	    New=i;
	    break;
	}
	DP(New);
	printf("%d",max(f[New][1],f[New][0]));
	return 0;
}
2022/8/12 11:21
加载中...