全部评论 3

  • #include <iostream>
    using namespace std;
    constexpr int N = 2e5 + 10;
    long long fa[N];
    long long find(int x) {
    	if (fa[x] == x) {
    		return x;
    	}
    	return fa[x] = find(fa[x]);
    }
    int main() {
    	int n, m;
    	cin >> n >> m;
    	for (int i = 1; i <= n; i++) {
    		fa[i] = i;
    	}
    	while (m--) {
    		int x, y, z;
    		cin >> z >> x >> y;
    		if (z == 1) {
    			fa[find(x)] = fa[find(y)];
    		} else {
    			if (find(x) == find(y)) {
    				cout << 'Y';
    			} else {
    				cout << 'N';
    			}
    			cout << '\n';
    		}
    	}
    	return 0;
    }
    

    老师为什么合并的时候不能写成fa[find(x)] = fa[find(y)];?

    2天前 来自 广东

    0

热门讨论