時間限制: 1000ms 記憶體限制: 256mb
alice和bob還有其他幾位好朋友在一起玩傳話遊戲。這個遊戲是這樣進行的:首先,所有遊戲者按順序站成一排,alice站第一位,bob站最後一位。然後,alice想一句話悄悄告訴第二位遊戲者,第二位遊戲者又悄悄地告訴第三位,第三位又告訴第四位……以此類推,直到倒數第二位告訴bob。兩位遊戲者在傳話中,不能讓其他人聽到,也不能使用肢體動作來解釋。最後,bob把他所聽到的話告訴大家,alice也把她原本所想的話告訴大家。
由於傳話過程中可能出現一些偏差,遊戲者越多,bob最後聽到的話就與alice所想的越不同。bob聽到的話往往會變成一些很搞笑的東西,所以大家玩得樂此不疲。經過幾輪遊戲後,alice注意到在兩人傳話中,有些詞彙往往會錯誤地變成其他特定的詞彙。alice已經收集到了這樣的乙個詞彙轉化的列表,她想知道她的話傳到bob時會變成什麼樣子,請你寫個程式來幫助她。
輸入包括多組資料。第一行是整數 t,表示有多少組測試資料。每組資料第一行包括兩個整數 n 和 m,分別表示遊戲者的數量和單詞轉化列表長度。隨後有 m 行,每行包含兩個用空格隔開的單詞 a 和 b,表示單詞 a 在傳話中一定會變成 b。輸入資料保證沒有重複的 a。最後一行包含若干個用單個空格隔開的單詞,表示alice所想的句子,句子總長不超過100個字元。所有單詞都只包含小寫字母,並且長度不超過20,同乙個單詞的不同時態被認為是不同的單詞。你可以假定不在列表中的單詞永遠不會變化。
對於每組測試資料,單獨輸出一行「case #c: s」。其中,c 為測試資料編號,s 為bob所聽到的句子。s 的格式與輸入資料中alice所想的句子格式相同。
1 ≤ t ≤ 100
小資料:2 ≤ n ≤ 10, 0 ≤ m ≤ 10
大資料:2 ≤ n ≤ 100, 0 ≤ m ≤ 100
樣例輸入
2樣例輸出4 3ship sheep
sinking thinking
thinking sinking
the ship is sinking
10 5
tidy tiny
tiger liar
tired tire
tire bear
liar bear
a tidy tiger is tired
case #1: the sheep is thinkingcase #2: a tiny bear is bear
view code
1 #include 2 #include 3 #include 4 #include5 #include 6 #include 7
using
namespace
std;
8 mapmm;
9char s1[30],s2[30],s[110],*p;
10int
t,m,n;
11void
solve()12
23 cout<
25int
main()
2637
gets(s);
38 printf("
case #%d:
",cnt);
39 p=strtok(s,"");
40solve();
41while((p=strtok(null,"
")))
4246 cout<
48return0;
49 }
傳話遊戲 程式設計之美挑戰賽
題目描述 時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb alice和bob還有其他幾位好朋友在一起玩傳話遊戲。這個遊戲是這樣進行的 首先,所有遊戲者按順序站成一排,alice站第一位,bob站最後一位。然後,alice想一句話悄悄告訴第二位遊戲者,第二位遊戲者又悄悄地告訴第...
2013程式設計之美資格賽 傳話遊戲
時間限制 1000ms 記憶體限制 256mb alice和bob還有其他幾位好朋友在一起玩傳話遊戲。這個遊戲是這樣進行的 首先,所有遊戲者按順序站成一排,alice站第一位,bob站最後一位。然後,alice想一句話悄悄告訴第二位遊戲者,第二位遊戲者又悄悄地告訴第三位,第三位又告訴第四位 以此類推...
2013程式設計之美資格賽 傳話遊戲
時間限制 1000ms 記憶體限制 256mb alice和bob還有其他幾位好朋友在一起玩傳話遊戲。這個遊戲是這樣進行的 首先,所有遊戲者按順序站成一排,alice站第一位,bob站最後一位。然後,alice想一句話悄悄告訴第二位遊戲者,第二位遊戲者又悄悄地告訴第三位,第三位又告訴第四位 以此類推...