讨论 / C++代码[并查集]31行
Tobe 2014-07-13 19:34:43
点我顶贴 收藏 删除
#include<cstdio>

int n, m, p;

int father[6000];

int Find(int n) {

if (father[n] == n) return n;

father[n] = Find(father[n]);

return father[n];

}

void Union(int a, int b) {

int fa = Find(a), fb = Find(b);

father[fb] = fa;

}

int main() {

scanf("%d%d%d", &n, &m, &p);

int a, b;

for (int i = 1; i <= n; i++) father[i] = i;

for (int i = 1; i <= m; i++) {

scanf("%d%d", &a, &b);

Union(a, b);

}

for (int i = 1; i <= p; i++) {

scanf("%d%d", &a, &b);

if (Find(a)==Find(b)) printf("Yes\n");

else printf("No\n");

}

return 0;

}

查看更多回复
提交回复