题目链接:Problem - 5326 (hdu.edu.cn)
题目:
样例:
题目思路:
用并查集去遍历所有的父节点,直到a[x]==x为止;
AC代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1000+5;
int n,k,x,y;
int a[N],sum[N];
void init(){
for(int i=1;i<=n;i++){
a[i]=i;
sum[i]=0;
}
}
int find(int x){
int q=x;
while(q!=a[q]){
sum[a[q]]++;
q=a[q];
}
}
int main(){
while(cin>>n>>k){
init();
int m=n-1;
while(m--){
cin>>x>>y;
if(x!=y){
a[y]=x;
find(y);
}
}
int ans=0;
for(int i=1;i<=n;i++){
if(sum[i]==k)ans++;
}
cout<<ans<<endl;
}
return 0;
}