#include <iostream> #include <cstdio> using namespace std; int parent[500]; int find(int x) // 找祖宗函数 { if (parent[x] != x) parent[x] = find(parent[x]); return parent[x]; } int main() { int i, n, m, p, a, b; cin >> n >> m >> p; //一共n个‘人’, m对关系,p次判断 for (i = 1; i <= n; i++) // 初始化每个人父亲初始化为自己 parent[i] = i; for (i = 0; i < m; i++) { cin >> a >> b; // 找到a,b的祖宗 a = find(a); b = find(b); parent[a] = b; //将其中一个的祖宗设为另一个的祖宗 } for (i = 0; i < p; i++) { cin >> a >> b; // 判断a,b是否有关系查看其是否是一个祖宗即可 a = find(a); b = find(b); if (a == b) printf("Yes\n"); else printf("No\n"); } return 0; }
(ps: 个人写法,不喜轻喷)
原文:https://www.cnblogs.com/sqdtss/p/12348888.html