家譜(並查集)

2021-06-25 23:43:51 字數 904 閱讀 7272

problem description

現代的人對於本家族血統越來越感興趣,現在給出充足的父子關係,請你編寫程式找到某個人的最早的祖先。

input

輸入有多組資料,每組資料由多行組成,首先是一系列有關父子關係的描述,其中每一組父子關係由二行組成,用#name的形式描寫一組父子關係中的父親的名字,用+name的形式描寫一組父子關係中兒子的名字;接下來用?name的形式表示要求該人的最早的祖先;最後用單獨的乙個$表示結束。規定每個人的名字都只有6個字元,總人數最多可能達到50000人,家譜中的記載不超過30代。

output

對於每組輸入資料,按照輸入檔案的要求順序,求出每乙個要找祖先的人的祖先,格式:本人的名字+乙個空格+祖先的名字+回車。

sample input

#george

+rodney

#arthur

+gareth

+walter

#gareth

+edward

?edward

?walter

?rodney

?arthur

$sample output

edward arthur

walter arthur

rodney george

arthur arthur

//並查集的變形

#include#include#include#include#includeusing namespace std;

mapf;

string find(string a)

int main()

else if(a[0]=='+')

else if(a[0]=='?')

}return 0;

}

家譜 並查集

description 現代的人對於本家族血統越來越感興趣,現在給出充足的父子關係,請你編寫程式找到 某個人的最早的祖先。input 輸入檔案由多行組成,首先是一系列有關父子關係的描述,其中每一組父子關係由二行 組成,用 name 的形式描寫一組父子關係中的父親的名字,用 name 的形式描寫一組父...

並查集 家譜

現代的人對於本家族血統越來越感興趣。給出充足的父子關係,請你編寫程式找到某個人的最早的祖先。輸入由多行組成,首先是一系列有關父子關係的描述,其中每一組父子關係中父親只有一行,兒子可能有若干行,用 name的形式描寫一組父子關係中的父親的名字,用 name的形式描寫一組父子關係中的兒子的名字 接下來用...

並查集 家譜

現代的人對於本家族血統越來越感興趣,現在給出充足的父子關係,請你編寫程式找到 某個人的最早的祖先。輸入檔案由多行組成,首先是一系列有關父子關係的描述,其中每一組父子關係由二行 組成,用 name 的形式描寫一組父子關係中的父親的名字,用 name 的形式描寫一組父子關 系中的兒子的名字 接下來用?n...