数据是否有问题?

P3367 【模板】并查集

```cpp #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> int n, m, ans; int father[10005]; int find(int x) { if(x == father[x]) return x; else return father[x] = find(father[x]); } void add(int x, int y) { father[find(x)] = y; } bool check(int x, int y) { return find(x) == find(y); } int main() { scanf("%d%d", &n, &m); for(int i = 1; i <= n; i ++) father[i] = i; for(int i = 1; i <= m; i ++) { int z, x, y; scanf("%d%d%d", &z, &x, &y); if(z == 1) { add(x, y); } else if(z == 2) { if(check(x, y)) { printf("Y\n"); } else printf("N\n"); } } return 0; } ```
by Elaina_7 @ 2019-11-16 09:45:54


@[saber_lover](/user/50983) 没问题
by 樱花飞舞 @ 2019-11-16 09:58:04


@[saber_lover](/user/50983) 您的写法好像错了……
by 紫陰花 @ 2019-11-16 09:58:32


@[saber_lover](/user/50983) add()写错了,错误跟试机时一模一样
by 樱花飞舞 @ 2019-11-16 09:59:13


~~我刚刚还A了这道题,数据怎么会错~~
by 紫陰花 @ 2019-11-16 10:01:17


``` father[find(x)] = y ``` 是 ``` father[find(x)] = find(y) ``` 吧
by _jimmywang_ @ 2019-11-16 10:03:59


帮你测过了,改完就A了
by _jimmywang_ @ 2019-11-16 10:04:45


``` #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> int n, m, ans; int father[10005]; int find(int x) { if(x == father[x]) return x; else return father[x] = find(father[x]); } void add(int x, int y) { father[find(x)] =find(y);//改这里 } bool check(int x, int y) { return find(x) == find(y); } int main() { scanf("%d%d", &n, &m); for(int i = 1; i <= n; i ++) father[i] = i; for(int i = 1; i <= m; i ++) { int z, x, y; scanf("%d%d%d", &z, &x, &y); if(z == 1) { add(x, y); } else if(z == 2) { if(check(x, y)) { printf("Y\n"); } else printf("N\n"); } } return 0; } ```
by _jimmywang_ @ 2019-11-16 10:05:12


谢谢各位大佬,A了
by Elaina_7 @ 2019-11-16 10:23:21


|