資訊傳遞 NOIP2015 day1 T2

2022-05-21 07:29:59 字數 1216 閱讀 8122

題文:

有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個整數,表示遊戲一共可以進行多少輪。

這題目看上去是在找乙個有向圖的最小環,因為每個點只有乙個出度,所以圖中不可能出現強連通分量中套著

強連通分量的情況,所以我們只要跑遍tarjian,統計每個分量的size就可以了;

但是n平方的演算法為啥沒t掉,求解;

ac**:

#include#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=2000020

;int n,num=0,num1=0

;int

dfn[maxn],low[maxn];

bool

in[maxn];

int ans=1

<<30

;struct

edgea[maxn];

void addedge(int

from,int

to)stack

q;void tarjian(int

now)

else

if(in

[to])

}if(low[now]==dfn[now])

if(size!=1

) ans=min(ans,size);

}}int

main()

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

}printf("%d

",ans);

}

NOIP2015 Day1 資訊傳遞

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

NOIP 2015 資訊傳遞

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

noip 2015 資訊傳遞

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