魅力
2025-02-04 19:35:11
发布于:上海
#include<iostream>
#include<vector>
int n,c[500001],i;
std::vector<int>mp[500001];
bool f(int now=1,int pre=-1){
if(i!=pre&&c[now]!=c[pre])return 0;
for(int i:mp[now])if(i!=pre)if(!f(i,now))return 0;
return 1;
}
int main(){
scanf("%d",&n);
for(int i(1),u,v;i<n;++i){
scanf("%d %d",&u,&v);
mp[u].push_back(v),mp[v].push_back(u);
}
for(int i(1);i<=n;++i)scanf("%d",c+i);
for(i=1;i<=n;++i){
for(int idx:mp[i])if(!f(idx,i))goto wa;
printf("YES\n%d",i);
return 0;
wa:0;
}
puts("NO");
return 0;
}
这里空空如也
有帮助,赞一个