题目大意
有一个并查集,你需要完成合并和查询操作。
#include#define max 100000 int f[max+1]; int find(int x) { if (!f[x]) return x; f[x]=find(f[x]); return f[x]; } int insert(int x,int y) { if (find(x)!=find(y)) { f[find(x)]=find(y); return 1; } return 0; } int main() { int m,n; scanf("%d%d",&m,&n); for (int i=1;i<=n;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); if (x==1) insert(y,z); else if (x==2) { if (find(y)==find(z)) printf("Y\n"); else printf("N\n"); } } }
Comments NOTHING