一个问题
查看原帖
一个问题
1224510
huyiheng楼主2024/8/10 10:49

我的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;
}
2024/8/10 10:49
加载中...