题解 P3367 【【模板】并查集】

ShineEternal

2018-07-01 15:45:52

Solution

#include<cstdio> using namespace std; int father[200001]; int find(int a) { if(father[a]!=a)father[a]=find(father[a]); return father[a]; } int op(int x,int y) { father[x]=y; return 0; } int main() { int n,m; int x,y,pd; int q; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { father[i]=i; } for(int i=1;i<=m;i++) { scanf("%d%d%d",&pd,&x,&y); if(pd==2) { if(find(x)==find(y)) { printf("Y\n"); } else printf("N\n"); } if(pd==1) { int r1=find(x); int r2=find(y); op(r1,r2); } } return 0; }