#include<stdio.h>
#include<set>
#include<algorithm>
using namespace std;
int n, Q, sum=0;
int father[10010];
bool isfather[10010]={false};
set<int> st;
int findfather(int x){
int a=x, aa;
while(father[x]!=x){
x=father[x];
}
int fa=x;
while(father[a]!=a){
aa=a;
father[a]=fa;
a=father[aa];
}
return fa;
}
void unionn(int a, int b){
int faA=findfather(a);
int faB=findfather(b);
if(faA!=faB)father[faA]=faB;
}
int main(){
int i, j, k, temp, last, t1, t2;
for(i=0;i<10010;i++)father[i]=i;
fill(isfather,isfather+10010,false);
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&k);
for(j=0;j<k;j++){
scanf("%d",&temp);
st.insert(temp);
if(j>0)unionn(last,temp);
last=temp;
}
}
int len=st.size();
for(i=1;i<=len;i++){
isfather[findfather(i)]=true;
}
for(i=1;i<=len;i++){
if(isfather[i]==true)sum++;
}
printf("%d %d\n",sum,st.size());
scanf("%d",&Q);
for(i=0;i<Q;i++){
scanf("%d%d",&t1,&t2);
if(findfather(t1)==findfather(t2))printf("Yes\n");
else printf("No\n");
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-6108.html