首页 > 代码库 > 【hihoCoder第十四周】无间道之并查集
【hihoCoder第十四周】无间道之并查集
就是基础的并查集。0代表合并操作,1代表查询操作。一开始以为会卡路径压缩,忐忑的交了一版裸并查集,结果AC了。数据还是很水的。
以后坚持做hiho,当额外的练习啦~
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 map<string, int> Hash; 5 int Father[1000005]; 6 7 int getFather (int x) { 8 if (x != Father[x]) { 9 return getFather (Father[x]);10 }11 return x;12 }13 14 void Union (int p, int q) {15 int x = getFather (p);16 int y = getFather (q);17 if (x != y) {18 Father[y] = x;19 }20 }21 22 int main () {23 ios :: sync_with_stdio(false);24 cin.tie(0);25 int n, a, cnt = 1;26 string x, y;27 cin >> n;28 for (int i = 0; i < 100005; ++ i) {29 Father[i] = i;30 }31 while (n --) {32 cin >> a >> x >> y;33 if (a == 0) {34 if (!Hash[x]) {35 Hash[x] = cnt ++;36 }37 if (!Hash[y]) {38 Hash[y] = cnt ++;39 }40 Union (Hash[x], Hash[y]);41 } else {42 if (!Hash[x]) {43 Hash[x] = cnt ++;44 }45 if (!Hash[y]) {46 Hash[y] = cnt ++;47 }48 if (getFather (Hash[x]) == getFather (Hash[y])) {49 cout << "yes" << endl;50 } else {51 cout << "no" << endl;52 }53 }54 }55 return 0;56 }
【hihoCoder第十四周】无间道之并查集
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。