比赛 |
USACO银组重赛hhh |
评测结果 |
AAAAAAAAAAAAAAA |
题目名称 |
Clock Tree |
最终得分 |
100 |
用户昵称 |
梦那边的美好ET |
运行时间 |
0.025 s |
代码语言 |
C++ |
内存使用 |
13.74 MiB |
提交时间 |
2020-03-02 10:36:04 |
显示代码纯文本
#include<bits/stdc++.h>
#define maxn 2600
using namespace std;
int n,a[maxn],a1,a2,su1,su2,d[maxn],ans;
vector<int>b[maxn];
void solve(int p,int fa,int sd){
d[p]=sd;
for(int i=0;i<b[p].size();i++){
int x=b[p][i];
if(x==fa)continue;
solve(x,p,sd+1);
}
return;
}
int main(){
freopen("usaco_Feb_clocktree.in","r",stdin);
freopen("usaco_Feb_clocktree.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n-1;i++)scanf("%d%d",&a1,&a2),b[a1].push_back(a2),b[a2].push_back(a1);
solve(1,0,0);a1=a2=0;
for(int i=1;i<=n;i++){
if(d[i]%2)su1+=a[i],a1++;
else su2+=a[i],a2++;
}
if(su1%12==su2%12)ans=n;
if((su1+1)%12==su2%12)ans=a2;
if((su1+11)%12==su2%12)ans=a1;
printf("%d\n",ans);
return 0;
}