34. 朋友相依關係

某社群平台上,每一個使用者都可以將其他使用者設定為【認識的人】,並填上對該使用者的【熟悉度】數值。
若 A 和 B 互相加對方為認識的人,則 A 與 B 的關係為【朋友】,其熟悉度為兩人設定的較小值。
A 可以找尋 B 的朋友,然後認識第二層的新朋友,透過這種方法可以認識一層又一層新的朋友。

給定 N 個認識的人與 A,B,請找出 :
1.  A 最少要經過多少層的朋友關係才能找到 B ? 會經過哪些朋友?
2.  假設 A 要經過加總最大熟悉度的朋友關係才能找尋到 B,則會經過哪些朋友? 加總的最大熟悉度為何?

【輸入說明】
第一行:輸入N個整數,代表認識的人 (2<=N<=10)
第二行:輸入兩個字元(X,Y)和一個數值(K),中間皆用一個空白隔開,分別代表第一個人,第二個人,以及第一個人對第二個人的熟悉度(1<=K<=10)。
…
直到輸入 -1 結束

範例輸入說明:
3 (總共有3個人,A,B,C)
A B 3 (A 認識 B,熟悉度為 3,中間皆用一個空白隔開)
B A 4 (B 認識 A,熟悉度為 4,中間皆用一個空白隔開)
A C 2 (A 認識 C,熟悉度為 2,中間皆用一個空白隔開)
C A 3 (C 認識 A,熟悉度為 3,中間皆用一個空白隔開)
C B 3 (C 認識 B,熟悉度為 3,中間皆用一個空白隔開)
B C 5 (B 認識 C,熟悉度為 5,中間皆用一個空白隔開)
-1 (結束)

【輸出說明】
第一行:輸出 A 經過多少層找到 B
第二行:輸出 A 經過哪些朋友找到 B (包括起點A和終點B),朋友之間用一個空白隔開
第三行:輸出 A 找到 B 所經過的最大熟悉度加總
第四行:輸出 A 經過哪些朋友找到 B (包括起點A和終點B)﹐朋友之間用一個空白隔開

範例輸出說明:
1 (A 僅需經過 1 層朋友關係即可認識 B (A 和 B 原本就認識))
A B (A 和 B 原本就認識,不需經過其他朋友,朋友之間用一個空白隔開)
5 (加總的最大熟悉度為 5)
A C B (A 認識 C 後再透過 C 認識 B,朋友之間用一個空白隔開)

因為A對C的熟悉度為2,C對A的熟悉度為3,所以A與C之間的熟悉度為2(取較小值)
因為C對B的熟悉度為3,B對C的熟悉度為5,所以B與C之間的熟悉度為3(取較小值)
當 A 認識 C,再透過 C 認識 B,會得到加總最大的熟悉度 2 + 3 = 5。

【特殊要求】
請使用 dictionary 儲存資料並完成此題目

【測試資料一】
輸入:
3
A B 3
B A 4
A C 2
C A 3
C B 3
B C 4
-1

輸出:
1
A B
5
A C B


【測試資料二】
輸入:
5
C A 3
A C 1
B C 8
C B 6
D E 1
E D 2
E B 1
B E 3
-1

輸出:
2
A C B
7
A C B

【測試資料三】
輸入:
7
A C 2
C A 8
A E 6
E A 8
C D 1
D C 8
E F 4
F E 9
B D 4
D B 3
F G 2
G F 4
B G 4
G B 5
-1

輸出:
3
A C D B
16
A E F G B

【測試資料四】
輸入:
6
A E 2
E A 1
E C 2
C E 1
D C 2
C D 1
B D 2
D B 1
A F 2
F A 1
E F 2
F E 1
-1

輸出:
4
A E C D B
5
A F E C D B


【隱藏測試資料一】
輸入:
5
A B 3
B A 4
A D 2
D A 3
B D 4
D B 5
B C 2
C B 6
C D 3
D C 4
D E 3
E D 8
-1

輸出:
1
A B
7
A D C B

【隱藏測試資料二】
輸入:
5
D A 5
A D 3
A C 1
C A 2
D C 7
C D 9
D B 2
B D 5
E C 7
C E 3
-1

輸出:
2
A D B
10
A C D B

【隱藏測試資料三】
輸入:
6
A E 3
E A 4
C A 9
A C 6
D E 5
E D 2
C F 1
F C 3
B D 2
D B 1
E C 4
C E 6
-1

輸出:
3
A E D B
13
A C E D B

【隱藏測試資料四】
輸入:
5
A E 2
E A 1
E C 2
C E 1
D C 2
C D 1
B D 2
D B 1
-1

輸出:
4
A E C D B
4
A E C D B