P2661 資訊傳遞

2022-07-23 23:57:29 字數 1280 閱讀 1832

有 n個同學(編號為 1 到 n )正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為 ii 的同學的資訊傳遞物件是編號為 ti​的同學。

遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件(注意:可能有人可以從若干人那裡獲取資訊, 但是每人只會把資訊告訴乙個人,即自己的資訊傳遞物件)。當有人從別人口中得知自 己的生日時,遊戲結束。請問該遊戲一共可以進行幾輪?

共2行。

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

第2行包含 n個用空格隔開的正整數 t_1,t_2,\cdots\cdots,t_nt1​,t2​,⋯⋯,tn​,其中第 ii 個整數 t_iti​表示編號為 ii 的同學的資訊傳遞物件是編號為 t_iti​的同學, t_i \leq nti​≤n 且 t_i \neq iti​​=i 。

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。

#include#include#include#include#include#includeusing namespace std;

int fa[200006],d[200006];

int n,t,minn,last;

int read()

if(ch=='-')

while(ch>='0'&&ch<='9')

return a*b;

}int get(int x)

return fa[x];

}void check(int a,int b)

else

return;

}int main()

minn=0x7777777;

for(int i=1;i<=n;i++)

printf("%d",minn);

return 0;

}

P2661 資訊傳遞

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

P2661 資訊傳遞

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

P2661 資訊傳遞

並查集求解有向圖最小環 首先有個特殊要求的就是對於圖的邊是沒有長度的。然後我們採取乙個簡化操作,在找到這個環之間,由於只需要求環的長度,所以對於環的最後一條邊,不加入之前先判斷指向的點能不能最後指向原點。includeusing namespace std int n int ans 200050 ...