题目:https://www.patest.cn/contests/gplt/L2-024
写并查集老忘了初始化fa[]数组。。。
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
const int maxn=10005;
int fa[maxn];
set<int > s;
int find(int x){
return fa[x]!=x?fa[x]=find(fa[x]):x;
}
void Union(int a,int b){
int x=find(a);
int y=find(b);
if(x==y)
return;
fa[x]=y;
}
int main(){
int n,num=0;
cin>>n;
for(int i=0;i<maxn;i++)
fa[i]=i;
for(int i=0;i<n;i++){
int k,tmp,man;
cin>>k>>tmp;
num=max(tmp,num);
for(int j=1;j<k;j++){
cin>>man;
num=max(man,num);
Union(man,tmp);
}
}
for(int i=1;i<=num;i++)
s.insert(find(i));
cout<<num<<" "<<s.size()<<endl;
int q;
cin>>q;
for(int i=0;i<q;i++){
int a,b;
cin>>a>>b;
if(find(a)==find(b))
cout<<"Y"<<endl;
else
cout<<"N"<<endl;
}
return 0;
}