題解 Noip2015 資訊傳遞

2021-10-08 19:22:48 字數 794 閱讀 8756

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

為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同

時將自己當前所知的生日資訊告訴各自的資訊傳遞物件(注意:可能有人可以從若干人那裡獲取資訊,但是每人只

會把資訊告訴乙個人,即自己的資訊傳遞物件)。當有人從別人口中得知自己的生日時,遊戲結束。請問該遊戲一

共可以進行幾輪? 簡單的說就是給你乙個有向圖,讓你找出乙個最小的環來。

輸入輸入共2行。

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

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

其中第i個整數ti示編號為i的同學的資訊傳遞物件是編號為ti的同學,ti≤n且ti≠i

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

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

樣例輸入

52 4 2 3 1輸出3

建立乙個環,然後依次將每個人編號存入環中,開乙個陣列標記,另乙個陣列儲存編號,然後找到結果便結束,找最小的環,便是結果。

#include using namespace std;

const int maxn=200010;

int n, fa[maxn],ans=0x3f3f3f3f;

int get(int x, int &cnt)

int main () else

}cout

}

NOIP 2015 資訊傳遞

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

noip 2015 資訊傳遞

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

noip2015 資訊傳遞

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