1. 程式人生 > >P2661 信息傳遞

P2661 信息傳遞

數據 告訴 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 信息傳遞