P2661 信息傳遞
阿新 • • 發佈:2017-07-20
數據 告訴 pre 不知道 同學 格式 求一個 100% color
題目描述
有n個同學(編號為1到n)正在玩一個信息傳遞的遊戲。在遊戲裏每人都有一個固定的信息傳遞對象,其中,編號為i的同學的信息傳遞對象是編號為Ti同學。
遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日信息告訴各自的信息傳遞對象(註意:可能有人可以從若幹人那裏獲取信息,但是每人只會把信息告訴一個人,即自己的信息傳遞對象)。當有人從別人口中得知自己的生日時,遊戲結束。請問該遊戲一共可以進行幾輪?
輸入輸出格式
輸入格式:
輸入共2行。
第1行包含1個正整數n表示n個人。
第2行包含n個用空格隔開的正整數T1,T2,……,Tn其中第i個整數Ti示編號為i
的同學的信息傳遞對象是編號為Ti的同學,Ti≤n且Ti≠i
數據保證遊戲一定會結束。
輸出格式:
輸出共 1 行,包含 1 個整數,表示遊戲一共可以進行多少輪。
輸入輸出樣例
輸入樣例#1:5
2 4 2 3 1
輸出樣例#1:3
說明
樣例1解釋
遊戲的流程如圖所示。當進行完第 3 輪遊戲後, 4 號玩家會聽到 2 號玩家告訴他自
己的生日,所以答案為 3。當然,第 3 輪遊戲後, 2 號玩家、 3 號玩家都能從自己的消息
來源得知自己的生日,同樣符合遊戲結束的條件。
對於 30%的數據, n ≤ 200;
對於 60%的數據, n ≤ 2500;
對於 100%的數據, n ≤ 200000。
這題經畫圖可以看出其實是要求一個最小環,那麽就簡單了。
首先將入度為零的點去掉,然後再在圖中找最小環即可。
但是這題有一種暴力方法卻不知為什麽可以過,就是找爸爸深搜,然後定義一個次數量,總遍歷次數超過4384380就break,不知道為什麽也可以。
P2661 信息傳遞