我的G数组太小了,所以第七个点会wa
但为啥不是越界导致RE?
#include<bits/stdc++.h>
using namespace std;
int n,l,k,ans,r[10011],cnt[10011],G[10011][100],f[10011][2];
bool fa[10011];
int dfs(int u,int m){
if(!cnt[u]){
if(m) return r[u];
return 0;
}if(f[u][m]==0){
if(m){
f[u][m]+=r[u];
for(int v:G[u]) f[u][m]+=dfs(v,0);
}else for(int v:G[u]) f[u][m]+=max(dfs(v,0),dfs(v,1));
}return f[u][m];
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d",&r[i]);
}for(int i=1;i<n;++i){
scanf("%d%d",&l,&k);
G[k][++cnt[k]]=l,++fa[l];
}for(int i=1;i<=n;++i){
if(!fa[i]){
printf("%d",max(dfs(i,0),dfs(i,1)));
break;
}
}return 0;
}