使用 Map 來紀錄每一個人的最底層接觸者,一開始將所有人的 Map 值都預設為 -1。
宣告一個函式 findEnd,需要一個參數 N,如果 N == -1 || Map[N] == -1,return N。如果 Map[N] == N,return N。否則 return findEnd(Map[N])。
輸入資料時,如果兩個人都沒有接觸史,則要判斷其中是否有 0,如果有的話就要將另一個人的 Map 值設定為 0。如果兩個人都有接觸史,則要判斷其中有沒有 0,如果有 0 的話就將另一個人的 Map[findEnd(另一個人)] 設為 0,否則就將其設為 findEnd(另一個人)。如果是一個有一個沒有,則將沒有的人的 Map 值設定成 findEnd(另一個人)。
最後跑一個從 0 到 N-1 的迴圈,如果 findEnd(Map[目前數字]) == 0,就將答案 +1。