比赛 USACO银组重赛hhh 评测结果 AAAAAAAAAAAAAAA
题目名称 Clock Tree 最终得分 100
用户昵称 ShallowDream雨梨 运行时间 0.402 s
代码语言 C++ 内存使用 13.79 MiB
提交时间 2020-03-02 14:56:27
显示代码纯文本
#include<bits/stdc++.h>
    #define int long long
    #define re register
    #define il inline
    #define inf 1e9
    #define eps 1e-15
    #define ll long long
    #define mod 1000000
    #define bianli for(int i=head[x];i;i=a[i].next)
    #define QWQ cout<<"qwq"
    #define me(qw) memset(qw,0,sizeof(qw));
    #define meinf(qw) memset(qw,0x3f,sizeof(qw));
	using namespace std;
	const int maxn=2505;
	struct qqq{int to,next;}a[maxn*2];
	int head[maxn],tot,b[maxn],t[maxn];
	void add(int x,int y){
	a[++tot].to=y;
	a[tot].next=head[x];
	head[x]=tot;}
	void dfs(int x,int fa){
	bianli{
	int to=a[i].to;
	if(to==fa)continue;
	dfs(to,x);
	t[x]=(t[x]-t[to]+12)%12;}}
	signed main(){
	freopen("usaco_Feb_clocktree.in","r",stdin);
	freopen("usaco_Feb_clocktree.out","w",stdout);
	int n,q,ans=0,w;
	cin>>n;
	for(int i=1;i<=n;i++)cin>>b[i];
	for(int i=1;i<n;i++)cin>>q>>w,add(q,w),add(w,q);
	for(int i=1;i<=n;i++){
	memcpy(t,b,sizeof(b));
	dfs(i,0);
	if(t[i]%12==1||t[i]%12==0)++ans;
	}
	cout<<ans;
    return 0;
    }