并查集裸题,模板上!
#include <cstdio>
int fa[5001], rnk[5001];
int find(int x) { return x == fa[x] ? x : fa[x] = find(fa[x]); }
int main() {
int n, m, p, i, j, x, y, t;
scanf("%d%d%d",&n,&m,&p);
for (i = 1; i <= n; ++i) fa[i] = i;
while(m--) {
scanf("%d%d",&i,&j);
x = find(i); y = find(j);
if (rnk[x] > rnk[y]) t = x, x = y, y = t;
fa[x] = y;
if (rnk[x] == rnk[y]) ++rnk[y];
}
while(p--) {
scanf("%d%d", &i, &j);
puts(find(i) == find(j) ? "Yes\n" : "No\n");
}
return 0;
}