【問題G23】翻譯。            [回前頁]

宇宙中很多不同的語言可以互相翻譯,舉例來說,中文的「我」,英文是「I」,而德文是「Ich」,然而,由於各種語言的來源與演進不同,不同的語言之間有的比較相近,有的就比較不一樣,例如中文與台語的相似性,就遠比中文和火星話的相似性高不少。

為了克服星際旅行的困難,大家都會隨身帶著一台智慧型翻譯機。不過,由於翻譯機的設計,它只內建有某些語言的翻譯字典。例如某型的翻譯機,可能只有「中文à台語」與「英文à中文」的翻譯字典。於是對於一個到台灣南部旅行的英國人來說,如果他想把英文翻成台語,智慧型翻譯機會先從英文翻成中文,再從中文翻成台語,再輸出結果。大部份的時候,翻譯機可能有多種選擇,例如它也可能可以先把英文翻成日語,再把日語翻成台語,或把英文翻成火星話,再把火星話翻成中文,再把中文翻成台語。這種時候,翻譯機希望選擇一個失真度最小的方式來完成它的任務。

為了簡化問題,我們把這個宇宙中所有的語言用一個大寫英文字母來表示,也就是說,最多有 26 種。翻譯的方式用一個字串來代表,例如從AàBàDàC 就簡寫成 ABDC。

失真度是如何計算的呢?翻譯機把語言之間的相似性定義為一個 1 到 99 間的整數,數字越大代表越接近。這個定義是對稱的,也就是說,

相似性(A, B) = 相似性(B, A)

而一個翻譯方式的失真度,則定義為

100 - 最小值(翻譯過程所經過的語言間的相似性)

舉例來說,如果

相似性(A, B) = 90

相似性(B, D) = 80

相似性(D, C) = 85

則翻譯方式 ABDC 的失真度就是

  100 - 最小值(90, 80, 85) = 20

於是翻譯機就可以計算使用不同方式的失真度來決定應該怎麼樣翻譯比較好。

給定各種語言之間的相似性,與翻譯機內建的可用的翻譯字典,假設您是說 A 語言的人,要去星際旅行,請您寫一個程式,列出所有這台翻譯機可以翻成的語言,與翻成這些語言的失真度。

輸入檔說明

輸入檔的前面 25 行,第 k 行會有 26-k 個數字,這行的第 m 個數字代第 k 種語言和第 m+k 種語言的相似度。舉例來說,如果第一行是

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

就代表

    相似度(A, B) = 1

    相似度(A, C) = 2

    依此類推

而如果第二行是

100 99 98 97 96 95 94 93 92 91 90 ……

就代表

    相似度(B, C) = 100

    相似度(B, D) = 99

    依此類推…

輸入檔後面的部份是由許多組資料所組成的,每組就是一台翻譯機。每組資料的第一行會是一個整數 L (1 <= L <= 650),代表這台翻譯機內建的字典數量。底下的 L 行每行由兩個不同的大寫英文字母組成,以空白鍵間隔。例如:

A C

代表翻譯機內建有 A 翻成 C 的字典,請特別注意字典只能單向使用。

輸入檔的最後一行會是一個整數 0,這組資料不用處理。

輸出檔說明

對於輸入檔中的每組資料,輸出檔要有一組相對應的輸出。若 A 能翻譯成 N 種語言(不包含 A 本身),則輸出 N+1 行,第一行形如

Dataset X

此處 X 是一個整數,由 1 起算,代表第幾組資料。

後面 N 行每行有一個大寫英文字母,和一個整數,以空白鍵分隔。這 N 行的大寫英文字母代表所有可以從 A 語言翻譯成的語言,不包括 A 語言本身。並且依字母順序由小到大排列,而整數則代表翻成該語言之最小失真度值。

提示:隨著翻譯機的不同,N 的值會介在 0 和 25 之間。

範例輸入

60 30 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

50 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10 10

10 10 10 10 10 10 10 10

10 10 10 10 10 10 10

10 10 10 10 10 10

10 10 10 10 10

10 10 10 10

10 10 10

10 10

10

3

A B

B C

A C

0

範例輸出

Dataset 1

B 40

C 50