记录详情

Wrong Answer


  
# 状态 耗时 内存占用
#1 Accepted 1ms 228.0 KiB
#2 Accepted 2ms 224.0 KiB
#3 Accepted 1ms 228.0 KiB
#4 Accepted 1ms 224.0 KiB
#5 Accepted 2ms 356.0 KiB
#6 Accepted 2ms 352.0 KiB
#7 Accepted 17ms 1.832 MiB
#8 Wrong Answer 38ms 3.973 MiB
#9 Wrong Answer 66ms 6.398 MiB
#10 Wrong Answer 63ms 6.281 MiB

代码

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
const int mod=10007,maxn=2e5+5;
int n,cnt,Max,Sum;
int last[maxn],w[maxn];
struct Edge
{
  int to,val,nxt;
} a[maxn<<1];

void Add(int x,int y)
{
  a[++cnt].to=y;
  a[cnt].nxt=last[x];
  last[x]=cnt;
}

void work(int x)
{
  int s=0,m1=0,m2=0;
  for(int i=last[x];i;i=a[i].nxt)
  {
  	int y=a[i].to;
  	if(w[y]>m1) m2=m1,m1=w[y];
  	else if(w[y]>m2) m2=w[y];
  	Sum=(Sum+w[y]*s)%mod;
  	s+=w[y];
  }
  Max=max(Max,m1*m2);
}
int main()
{
  int u,v;
  scanf("%d",&n);
  for(int i=1;i<n;i++)
  {
  	scanf("%d %d",&u,&v);
  	Add(u,v),Add(v,u);
  }
  for(int i=1;i<=n;i++) scanf("%d",&w[i]);
  for(int i=1;i<=n;i++) work(i);
  printf("%d %d\n",Max,(Sum<<1)%mod);
  return 0;
}

信息

递交者
类型
递交
题目
P1022 联合权值
题目数据
下载
语言
C++
递交时间
2019-11-12 18:03:45
评测时间
2019-11-12 18:03:45
评测机
分数
70
总耗时
196ms
峰值内存
6.398 MiB