AcWing 836. 森林的鸟
原题链接
简单
不要忘了树的数量就是祖宗节点的数量
#include<iostream>
using namespace std;
const int N=10010;
int f[N];
int n,q;
int maxb=1;
int find(int x)
{
if(f[x]!=x)f[x]=find(f[x]);
return f[x];
}
int main()
{
for(int i=1;i<=N;i++)
{
f[i]=i;
}
cin>>n;
while(n--){
int k;cin>>k;
int kk[k];
for(int i=0;i<k;i++)
{
cin>>kk[i];
maxb=max(kk[i],maxb);
}
for(int i=0;i<k-1;i++)
{
f[find(kk[i])]=find(kk[i+1]);
}
}
int res=0;
for(int i=1;i<=maxb;i++)
{
if(f[i]==i)
res++;
}
cout<<res<<' '<<maxb<<endl;
cin>>q;
while(q--){
int a,b;
cin>>a>>b;
if(find(a)==find(b))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}