SSL P2343或洛谷P2814 家譜

2021-10-08 08:14:53 字數 1028 閱讀 4748

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

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

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

#george

+rodney

#arthur

+gareth

+walter

#gareth

+edward

?edward

?walter

?rodney

?arthur

$

edward arthur

walter arthur

rodney george

arthur arthur

用map記錄,其他和並查集一樣

#include

#include

#include

#include

using

namespace std;

mapfa;

char a;

string s,ss;

string fd

(string x)

intmain()

else

if(a==

'+')

fa[s]

=ss;

else

cout<' '<<

fd(s)

>a;

}}

洛谷P3760異或和

傳送門啦 傳送門啦 一般這種位運算的題都要把每一位拆開來看,因為位運算每個位的結果這和這一位的數有關。這樣我們用s i 表示a的字首和,即 a 1 a 2 a i 然後我們從這些數二進位制最右位 2 0 開始,按照每一位對答案的貢獻來計算。假設我們現在算到最右位 2 0 並且位於第i個數,我們想要知...

洛谷P3175 按位或

剛開始你有乙個數字 0 每一秒鐘你會隨機選擇乙個 0,2 n 1 的數字,與你手上的數字進行或 c c 的 pascal 的or 操作。選擇數字 i 的概率是 p i 保證 0 leq p i leq 1 sum p i 1 問期望多少秒後,你手上的數字變成 2 n 1 設 s 為全集 s 設 e ...

洛谷 P3907 圈的異或

給出無向圖g,邊 ai,bi 的權是ci,判斷下列性質是否成立 對於任意圈c,其邊權的異或和是0 輸入格式 第1 行,1 個整數t,表示資料的組數。每組資料第1 行,2 個整數 n,m,表示圖g 點和邊的數量。m 行,每行3 個整數 ai,bi,ci,輸出格式 對每個資料輸出一行,yes 或者 no...