并查集

模板题:
亲戚
题解:

#include <bits/stdc++.h>

using namespace std;

int n, m, p;
int fa[5050];

int find(int x) {
     return fa[x] == x ? x : fa[x] = find(fa[x]);
}
int query(int x, int y) {
    int fx = find(x), fy = find(y);
    if(fx == fy) return 1;
    return 0;
}
void merge(int x, int y) {
    int fx = find(x), fy = find(y);
    if(fx == fy) return ;
    fa[fx] = fy;
}

int main() {
	cin >> n >> m >> p;
	for(int i = 1; i <= n; i ++) {
		fa[i] = i;
	}
	while(m --) {
		int x, y;
		cin >> x >> y;
		merge(x, y);
	}
	while(p --) {
		int x, y;
		cin >> x >> y;
		if(query(x, y)) {
			cout << "Yes" << endl;
		}
		else cout << "No" << endl;
	}
	return 0;
}
posted @ 2024-03-16 14:52  懒羊羊爱吃灰太狼  阅读(7)  评论(0)    收藏  举报