4511 資訊傳遞

2021-07-26 11:45:50 字數 1498 閱讀 4807

題目描述

description

有個同學(編號為 1 到)正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個

固定的資訊傳遞物件,其中,編號為的同學的資訊傳遞物件是編號為的同學。

遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前

所知的生日資訊告訴各自的資訊傳遞物件(注意:可能有人可以從若干人那裡獲取資訊,

但是每人只會把資訊告訴乙個人,即自己的資訊傳遞物件)。當有人從別人口中得知自

己的生日時,遊戲結束。請問該遊戲一共可以進行幾輪?

輸入描述 input description

輸入共 2行。

第 1行包含1個正整數n,表示n個人

第 2 行包含n 個用空格隔開的正整數t1 ,t 2 ,……,tn ,

其中第i個整數ti表示編號為i

的同學的資訊傳遞物件是編號為 t i 的同學,ti≤n 且 ti≠i。

資料保證遊戲一定會結束。

輸出描述 output description

輸出共 1行,包含  1個整數,表示遊戲一共可以進行多少輪。

樣例輸入 sample input 5

2 4 2 3 1

樣例輸出 sample output 3

資料範圍及提示 data size & hint

【輸入輸出樣例 1 說明】

遊戲的流程如圖所示。當進行完第 3 輪遊戲後,4 號玩家會聽到 2 號玩家告訴他自

己的生日,所以答案為 3。當然,第 3 輪遊戲後,2 號玩家、3 號玩家都能從自己的訊息

**得知自己的生日,同樣符合遊戲結束的條件。

對於 30%的資料,   n ≤ 200;

對於 60%的資料,  n  ≤ 2500;

對於 100%的資料,   n ≤ 200000。

分類標籤 tags

圖論   最小環   noip2015提高組day1t2

** 

#include#includeusing namespace std;

int n,t[200005],vis[200005],minn=1000000,tot,start;

//n個人,傳遞物件,是否訪問過,最小環,此環大小,環的起點

void topo(int i)

//成環,遇到起點,記錄起點

vis[i]=-1; //訪問標誌:正在訪問

topo(t[i]);

if(start&&i!=start)tot++; //在環的路上

else if(i==start) //回到起點,更新最優解,停止計算

vis[i]=1; //已訪問過

}int main()

c[u]=-1;

if(dfs(to[u]))

else

} c[u]=1;

return 0;

}int main()

Codevs 4511 資訊傳遞

題目描述 description 有個同學 編號為 1 到 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個 固定的資訊傳遞物件,其中,編號為的同學的資訊傳遞物件是編號為的同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前 所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有...

codevs4511資訊傳遞(Tarjan求環)

有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資訊,但是每...

神經資訊傳遞

第乙個感覺神經元直接連線感受器,就拿觸覺感受器來舉例吧,觸覺感受器在解除到東西的時候發生微弱的形變,驅動上面的機械門控通道開啟,導致鈣 鈉離子內流同時鉀離子外流,導致膜電位發生改變,於是周圍的電壓門控通道會因此開啟導致更多的電壓門控通道開啟,最後顯著改變膜電位,於是神經元上面的電壓門控通道會感受到周...