緣起:
我有同學跑去跟 Java 老師拿題目來練習,然後題目好像很難,他跑來問我。那題目是 Uva 上的題目,我看了之後覺得真的滿難的,跟 "圖" 有關,因此激起我的鬥志,那兩天拚命的在想那道題目,算一算,可能花了十五個小時以上 (加上寫程式的時間),成功解出後真的是快樂得要死,好久沒體會到那種感覺了,寫程式的快樂。
這個題目讓我對自己的程式能力增加不少信心,而且也是我獨立完成的一道難題,所以,我想要為它寫個完整的教學,分享自己的想法。
這個題目讓我對自己的程式能力增加不少信心,而且也是我獨立完成的一道難題,所以,我想要為它寫個完整的教學,分享自己的想法。
題目:
Uva10608
這裡說明一下它的意思,首先他會輸入一個正整數,它代表我們有幾組資料,接著,每一筆資料都會有一個 M ( 0 <= M <= 500000) 跟 N ( 1 <= N <= 30000),N 代表的是總共有幾個人,然後 M 代表有幾個 "關系" 。
接著,會輸入 M 筆資料,每筆資料包含兩個正整數 A 跟 B ( 1<=A&B <= 30000, A != B ),用數字編號表示不同的人,代表 A 跟 B 是朋友,朋友的朋友還是朋友,假如 1 跟 2 是朋友, 2 跟 3 是朋友,那麼 1 跟 3 也是朋友。
最後,它要你輸出最大的那個朋友群有幾個人。
圖例說明:
以下根據它的第二筆測資來說明。
N = 10, M = 12 ,總共有 10 個人 (1~10) ,有 12 組關系。
把所有的關系都連接起來後,會產生如下的圖。
看得出來,1 所在的那一群是最大的一群,總人數有 7 人,所以要輸出 7。
PS : 它會有重覆的資料,然後要注意 1 2 跟 2 1 是相同的意思。
沒有留言:
張貼留言