time limit:10000ms memory limit:65536k
total submit:88 accepted:43
case time limit:1000ms
description
現代的人對於本家族血統越來越感興趣, 現在給出充足的父子關係, 請你編寫程式找到 某個人的最早的祖先。
input
輸入檔案由多行組成, 首先是一系列有關父子關係的描述, 其中每一組父子關係由二行 組成,用#nam
ename
name
的形式描寫一組父子關係中的父親的名字,用+na
me
+name
+nam
e 的形式描寫一組父子關 系中的兒子的名字;接下來用?na
me
?name
?nam
e 的形式表示要求該人的最早的祖先;最後用單獨的乙個 $ 表示檔案結束。規定每個人的名字都有且只有 6
66 個字元,而且首字母大寫,且沒有任意兩 個人的名字相同。最多可能有 1000
1000
1000
組父子關係,總人數最多可能達到 50000
50000
5000
0 人,家譜中的 記載不超過 30
3030
代。output
按照輸入檔案的要求順序,求出每乙個要找祖先的人的祖先,格式:本人的名字+乙個 空格+祖先的名字+回車。
sample input
#g eo
rg
egeorge
george
+ ro
dney
+rodney
+rodne
y#arth
ur
arthur
arthur
+ ga
reth
+gareth
+gareth+w
alte
r+walter
+walte
r#gare
th
gareth
gareth
+ ed
ward
+edward
+edward?e
dwar
d?edward
?edward?w
alte
r?walter
?walter?r
odne
y?rodney
?rodney?a
rthu
r?arthur
?arthu
r$sample output
e dw
ar
dedward
edward
a rt
hu
rarthur
arthur
w al
te
rwalter
walter
a rt
hu
rarthur
arthur
r od
ne
yrodney
rodney
g eo
rg
egeorge
george
a rt
hu
rarthur
arthur
a rt
hu
rarthur
arthur
解題思路
字元的處理注意一下就好了。。。
**
#include
#include
#include
#include
#include
using namespace std;
mapfa;
string s,s1;
char c;
string find
(string x)
int main()
else
if(c==
'+')
fa[s]
=s1;
else
cout<" "<<
find
(s)>c;
}}
家譜(並查集)
problem description 現代的人對於本家族血統越來越感興趣,現在給出充足的父子關係,請你編寫程式找到某個人的最早的祖先。input 輸入有多組資料,每組資料由多行組成,首先是一系列有關父子關係的描述,其中每一組父子關係由二行組成,用 name的形式描寫一組父子關係中的父親的名字,用 ...
家譜 並查集
description 現代的人對於本家族血統越來越感興趣,現在給出充足的父子關係,請你編寫程式找到 某個人的最早的祖先。input 輸入檔案由多行組成,首先是一系列有關父子關係的描述,其中每一組父子關係由二行 組成,用 name 的形式描寫一組父子關係中的父親的名字,用 name 的形式描寫一組父...
並查集 家譜
現代的人對於本家族血統越來越感興趣。給出充足的父子關係,請你編寫程式找到某個人的最早的祖先。輸入由多行組成,首先是一系列有關父子關係的描述,其中每一組父子關係中父親只有一行,兒子可能有若干行,用 name的形式描寫一組父子關係中的父親的名字,用 name的形式描寫一組父子關係中的兒子的名字 接下來用...