记录编号 337582 评测结果 AAAAAAAAAA
题目名称 [NOIP 2014]联合权值 最终得分 100
用户昵称 GravatarZwoi_只会打表抄代码的蒟蒻 是否通过 通过
代码语言 C 运行时间 0.519 s
提交时间 2016-11-04 17:29:05 内存使用 5.63 MiB
显示代码纯文本
#include <stdio.h>
int u[200010][2],w[200010],n,i,maxn,a,b,max[200010][2];
long long sumn,v[200010];
void work(int a,int b)
{
	if(a>max[b][0]) 
	{  
		max[b][1]=max[b][0];
        max[b][0]=a;
	}
    else
    if(a>max[b][1]) 
		max[b][1]=a;
}
int main()
{
	freopen("linkb.in","r",stdin);
	freopen("linkb.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<n;i++)
		scanf("%d%d",&u[i][0],&u[i][1]);
	for(i=1;i<=n;i++)
		scanf("%d",w+i);
	for(i=1;i<n;i++)
	{
		a=u[i][0];
		b=u[i][1];
		v[a]+=w[b];
		v[b]+=w[a];
		work(w[a],b);
		work(w[b],a);
	}
	maxn=sumn=0;
	for(i=1;i<=n;i++)
		if(max[i][0]*max[i][1]>maxn)
			maxn=max[i][0]*max[i][1];
	for(i=1;i<n;i++)
	{
		a=u[i][0];
		b=u[i][1];
		sumn=(sumn+(v[a]-w[b])*w[b]%10007)%10007;
		sumn=(sumn+(v[b]-w[a])*w[a]%10007)%10007;
	}
	printf("%d %d",maxn,sumn);
	return 0;
}