官方题解
2025-07-14 08:14:36
发布于:浙江
10阅读
0回复
0点赞
T2 午枫的01树中心
题目大意
有一棵 树,求有多少个节点与其周围所有节点的权值都不同。
解题思路
我们只需要在建好图后,对每一个点进行判断是否是中心节点。
判断每一个节点时,只需要遍历其周围所有距离为 的节点是否与他的权值不相同即可。
参考代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
signed main(){
int n;cin>>n;
vector<int>c(n+1);
for(int i=1;i<=n;i++) cin>>c[i];
vector<vector<int>>v(n+1);
for(int i=1;i<n;i++){
int a,b;cin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
int res=0;
for(int i=1;i<=n;i++){
int flag=1;
for(auto x:v[i]){
if(!(c[x]^c[i])) flag=0;
}
res+=flag;
}
cout<<res<<endl;
}
这里空空如也
有帮助,赞一个