WA*1e7
查看原帖
WA*1e7
1124438
hgfs楼主2024/7/23 10:27

啊这题~

WA了#3

Wrong Answer.wrong answer On line 1 column 1, read 6, expected 7.

勒里个嘞

#include<bits/stdc++.h>
using namespace std;
const int N=100005;
long long n,e[N],ne[N],h[N],w[N],idx,d[N],ans;//ans为答案,d是一类路线。 
bool f[N];//标记某点是否算过。 

void add(long long a,long long b){
	e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}

void dp(long long y){//计算以点j为树根中最大的连通块。 
	f[y]=1;//标记该点算过。
	for(long long i=h[y];~i;i=ne[i]){//枚举该点的节点。 
		long long j=e[i];//节点的编号。 
		if(f[j]) continue;
		dp(j); //先计算节点,求较小的。判断用来防止倒着计算。 
		d[y]=max(d[y],d[y]+d[j]);
		ans=max(ans,d[y]); 
		//cout<<"d["<<y<<"]="<<d[y]<<endl;
	}
}

int main(){
	cin>>n;
	memset(h,-1,sizeof(h));
	for(int i=1;i<=n;i++) cin>>w[i],d[i]=w[i];
	for(int i=1;i<n;i++){
		long long a,b;
		cin>>a>>b;
		add(a,b),add(b,a);
	}
	dp(1);// 任取一点开始。 
	cout<<ans;
	return 0;
}
2024/7/23 10:27
加载中...