1 条题解
-
0
并查集应用,只不过是字符串,用 map 维护即可。
#include <bits/stdc++.h> using namespace std; string s,fa; map<string,string> f; string _find(string x){ return x==f[x]?x:f[x]=_find(f[x]); } int main(){ while (cin>>s&&s!="$"){ string p=""; for (int i=1;i<s.size();i++){//求真实人名 p+=s[i]; } if (s[0]=='#'){ if (f.count(p)==0){ f[p]=p; } fa=_find(p);//提前将父亲的值设为其祖先 }else if (s[0]=='+'){ f[p]=fa;//这样就可以直接赋值 }else{ cout<<p<<' '<<_find(p)<<endl; } } return 0; }
- 1
信息
- ID
- 505
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 33
- 已通过
- 31
- 上传者