为什么曾经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)
{
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;
}