洛谷P2814 家譜解題報告
阿新 • • 發佈:2018-12-15
家譜
P2814
技術統計
難度
提高+/省選-
用時
50min左右
提交次數 1
unaccept 次數 0
ac次數 1
題意概括
求祖先
資料範圍
解法、
知識點
- 並查集
- string
- stl map
解法概括
和普通的並查集沒有什麼大的區別,就是把int改成string就好了
坑點
- swtich 不熟練千萬不要用啊。。。
- 開的map是不需要類比a[maxn]這樣的,新學map的童鞋們容易錯
程式碼實現
#include<bits/stdc++.h>
using namespace std;
map<string,string>fa;
char ch;
string fat,s;
string find(string a)
{
if(fa[a]!=a)fa[a]=find(fa[a]);
return fa[a];
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);
while(cin>>ch)
{
if(ch=='$')break;
cin>>s;
if(ch=='#')
{
fat=s;
if(fa[fat]=="")fa[fat]=fat;
}
else if(ch=='+') fa[s]=fat;
else cout<<s<<" "<<find(s)<<endl;
}
return 0;
}
類似題目
並查集模板【霧】