搜尋此網誌

2019年10月29日 星期二

UVa : 10608 (一)

緣起:


    我有同學跑去跟 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 是相同的意思。


沒有留言:

張貼留言