資訊傳遞(NOIP2015提高組Day1T2)

2021-07-24 14:45:21 字數 1226 閱讀 2572

【題目描述】

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

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

【輸入格式】

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

第2行包含n個用空格隔開的正整數t1,t2,……,tn其中第i個整數ti示編號為i的同學的資訊傳遞物件是編號為ti的同學,ti≤n且ti≠i

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

【輸出格式】

1 個整數表示遊戲一共可以進行多少輪

【樣例輸入】

5 2 4 2 3 1

【樣例輸出】

3 【資料範圍】

n≤200000

【分析】

暴力深搜即可。

uses math;

var a,f:array[0..200001]of longint;

i,n,ans,t:longint;

procedure

search

(now:longint);

begin

if f[now]>0

then

begin ans:=min(ans,t-f[now]+1);exit; end;

if f[now]<>-1

then

begin

inc(t);

f[now]:=t;

search(a[now]);

end;

f[now]:=-1;

end;

begin

readln(n);

for i:=1

to n do

read(a[i]);

fillchar(f,sizeof(f),0);

ans:=maxlongint;

for i:=1

to n do

if f[i]=0

then

begin

t:=0;

search(i);

end;

write(ans);

end.

NOIP2015提高組 資訊傳遞

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

NOIP2015提高組 資訊傳遞

本人水平有限,題解不到為處,請多多諒解 本蒟蒻謝謝大家 題目 傳送門 因為本題涉及到連通成環的問題,因此可以考慮用並查集來做 注意 此題不能用扁平化,因為我們要統計用了多少次才能到達其祖先,相當於要記錄樹中的dep值,但由於會構成環,所以用普通的並查集來做方便一些 code 1 include2 p...

NOIP2015提高組Day1 資訊傳遞

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