家譜 SSL 2343 並查集

2021-10-08 08:12:47 字數 2315 閱讀 9361

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的形式描寫一組父子關係中的兒子的名字 接下來用...