求助曾经AC->现在WA
查看原帖
求助曾经AC->现在WA
1304706
yanrs1019楼主2025/2/4 18:47

为什么曾经AC的代码现在WA了
AC
WA

#include<bits/stdc++.h> 
using namespace std;
#define LL long long
#define N  200005
#define MOD 10007
struct node
{
	LL next,val;
}edge[N<<1];
LL cnt,head[N],w[N];
void add(LL x,LL y)
{
	edge[++cnt].next=head[x];
	edge[cnt].val=y;
	head[x]=cnt;
}
int main()
{
	LL i,j,x,y,maxx,maxy,in,out,n,ans,maxn=-0x7fffffff;
	scanf("%lld",&n);
	for(i=1;i<n;i++)
	{
		scanf("%lld%lld",&x,&y);
		add(x,y),add(y,x);
	}
	for(i=1;i<=n;i++)scanf("%lld",&w[i]);
	for(i=1;i<=n;i++)
	{
		maxx=maxy=-0x7fffffff;
		in=out=0;
		for(j=head[i];j;j=edge[j].next)
		{
			//printf("i:%lld j:%lld\n",i,j);
			if(w[edge[j].val]>maxx)maxy=maxx,maxx=w[edge[j].val];
			else maxy=max(maxy,w[edge[j].val]);
			out=(out+w[edge[j].val])%MOD;
			in=(in+w[edge[j].val]*w[edge[j].val])%MOD;
		}
		out=out*out%MOD;
		ans=(ans+out-in+MOD)%MOD;
		maxn=max(maxn,maxx*maxy);
	}
	printf("%lld %lld",maxn,ans);
	return 0;
}
2025/2/4 18:47
加载中...