#include<cstdio>
#include<set>
#include<iostream>
using namespace std;
int f[10005];
int findf(int x)
{
return x==f[x]?x:f[x]=findf(f[x]);
}
void Union(int a,int b)
{
int fa=findf(a);
int fb=findf(b);
if(fa!=fb)
f[fa]=fb;
}
int main()
{
set<int>s;
for(int i=0;i<10005;i++)
f[i]=i;
int n,q,k,a,b,sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&k,&a);
s.insert(a);
for(int j=0;j<k-1;j++){
scanf("%d",&b);
s.insert(b);
Union(a,b);
}
}
for(auto it=s.begin();it!=s.end();it++){
if(f[*it]==*it)
sum++;
}
printf("%d %d\n",s.size(),sum);
scanf("%d",&q);
for(int i=0;i<q;i++){
scanf("%d%d",&a,&b);
if(findf(a)==findf(b))
printf("Y\n");
else
printf("N\n");
}
return 0;
}
L2-024.部落
最新推荐文章于 2025-04-05 17:21:07 发布