TLE求助
查看原帖
TLE求助
751417
diamond_153楼主2023/1/20 23:02
#include<cstdio>
#include<cstring>
#include<vector>
int val[16100],n,root=0,ans=~0x7fffffff;
bool vis[16100];
std::vector<int> tree[16100];
inline int max(int a,int b){return a>b?a:b;}
int get(int x){
	int r=val[x];
	vis[x]=1;
	for(auto i:tree[x])
		if(!vis[i])
			r+=max(0,get(i));
	vis[x]=0;
	return r;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",val+i);
	for(int i=1;i<n;i++){
		int x,y;scanf("%d%d",&x,&y);
		tree[x].push_back(y);
		tree[y].push_back(x);
	}
	while(++root<=n)
		ans=max(ans,get(root));
	printf("%d",ans);
}
2023/1/20 23:02
加载中...