a053: 1060304 第 2 題 小群體
標籤 : APCS 題庫 APCS 小群體
通過比率 : 0人/0人 (0%) [非即時]
評分方式:
Tolerant

最近更新 : 2022-07-07 08:14

內容

問題描述
Q同學正在習程式, P老師出了以下的題目讓他練習。
一群人在起時經常會形成一個一個的小群體。假設有N個人,編號由 0到 N-1,每個人都寫下他最好朋友的編號(最好朋友有可能是自己的編號,如果自己沒有其他好友),在本題中, 每個人的好友編號絕對不會重複,也就是說好友編號絕對不會重複,也就是說 0到 N-1每個數字都恰好出現一次。
這種好友的關係會形成一 些小群體。例如 N=10,好友編號如下,

 
0
1
2
3
4
5
6
7
8
9
好友編號
4
7
2
9
6
0
8
1
5
3



0 的好友是 4,4 的好友是 6,6 的好友是 8,8 的好友是 5,5 的好友是 0,所以 0、4、6、8、和 5 就形成了一個小群體。另外,1 的好友是 7 而且 7 的好友是 1,所以 1 和 7 形成另一個小群體,同理,3 和 9 是一個小群體,而 2 的好友是自己,因此他自己是一個小群體。總而言之,在這個例子裡有 4 個小群體:{0,4,6,8,5}、{1,7}、{3,9}、{2}。本題的問題是:輸入每個人的好友編號,計算出總共有幾個小群體。
Q 同學想了想卻不知如何下手,和藹可親的 P 老師於是給了他以下的提示:如果你從 任何一人 x 開始,追蹤他的好友,好友的好友,….,這樣一直下去,一定會形成一 個圈回到 x,這就是一個小群體。如果我們追蹤的過程中把追蹤過的加以標記,很容 易知道哪些人已經追蹤過,因此,當一個小群體找到之後,我們再從任何一個還未追 蹤過的開始繼續找下一個小群體,直到所有的人都追蹤完畢。
Q 同學聽完之後很順利的完成了作業。
在本題中,你的任務與 Q 同學一樣:給定一群人的好友,請計算出小群體個數。


輸入說明

輸入格式
第一行是一個正整數 N,說明團體中人數。
第二行依序是 0 的好友編號、1 的好友編號、……、N-1 的好友編號。共有 N 個數字, 包含 0 到 N-1 的每個數字恰好出現一次,數字間會有一個空白隔開。



輸出說明

輸出格式
請輸出小群體的個數。不要有任何多餘的字或空白,並以換行字元結尾。

範例輸入 #1
範例一:輸入
10
4 7 2 9 6 0 8 1 5 3

範例二:輸入
3
0 2 1
範例輸出 #1
範例一:正確輸出
4

範例二:正確輸出
2
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (12%): 1.0s , <1K
公開 測資點#1 (12%): 1.0s , <1K
公開 測資點#2 (12%): 1.0s , <1K
公開 測資點#3 (12%): 1.0s , <1K
公開 測資點#4 (13%): 1.0s , <1M
公開 測資點#5 (13%): 1.0s , <1M
公開 測資點#6 (13%): 1.0s , <1M
公開 測資點#7 (13%): 1.0s , <1M
提示 :

範例一說明:
4 個小群體是 {0,4,6,8,5}, {1,7}, {3,9} 和 {2}。


範例二說明:
2 個小群體分別是{0},{1,2}。

標籤:
APCS 題庫 APCS 小群體
出處:
APCS 委員會010 [管理者: zero(管理員) ]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」