洛谷 P2814. 家谱
原题链接
中等
作者:
我是java同学
,
2024-01-26 18:24:29
,
所有人可见
,
阅读 26
#include <bits/stdc++.h>
using namespace std;
unordered_map<string, string> p;
string find(string x) {
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
int main() {
string dad, str;
while (cin >> str) {
string t = str.substr(1);
if (str == "$") break;
char c = str[0];
if (c == '#') {
dad = t;
if (p[dad] == "") p[dad] = dad;
} else if (c == '+') p[t] = dad;
else cout << t << ' ' << find(t) << endl;
//并查集区别于直接用哈希表,可以搜到底
}
return 0;
}