有
n' role="presentation">n
n個同學(編號為
1' role="presentation">1
1 到
n' role="presentation">n
n )正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為
i' role="presentation">i
i 的同學的資訊傳遞物件是編號為 ti
' role="presentation">tit
i 的同學。
遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件(注意:可能有人可以從若干人那裡獲取資訊, 但是每人只會把資訊告訴乙個人,即自己的資訊傳遞物件)。當有人從別人口中得知自 己的生日時,遊戲結束。請問該遊戲一共可以進行幾輪?
輸入格式:共 2
' role="presentation">2
2 行。 第 1
' role="presentation">1
1 行包含
1' role="presentation">1
1個正整數
n' role="presentation">n
n ,表示
n' role="presentation">n
n 個人。 第 2
' role="presentation">2
2 行包含
n' role="presentation">n
n 個用空格隔開的正整數 t1
,t2,
....
.,tn
' role="presentation">t1,
t2,.
....
,tnt
1,t2
,...
..,t
n ,其中第 ii 個整數 t_i 表示編號為
i' role="presentation">i
i的同學的資訊傳遞物件是編號為ti
' role="presentation">tit
i 的同學, ti
≤n且t
i≠i' role="presentation">ti≤
n且ti
≠iti
≤n且t
i≠i1 個整數,表示遊戲一共可以進行多少輪。
輸入樣例#1:
5 2 4 2 3 1
輸出樣例#1:
3 說明
樣例1解釋
遊戲的流程如圖所示。當進行完第 33 輪遊戲後, 4 4 號玩家會聽到 22 號玩家告訴他自己的生日,所以答案為 33 。當然,第 33 輪遊戲後, 2 2 號玩家、 33 號玩家都能從自己的****得知自己的生日,同樣符合遊戲結束的條件。
對於 30
' role="presentation">30
30 的資料, n≤
200;
' role="presentation">n
≤200;n
≤200
;對於
60' role="presentation">60
60 的資料,n≤
2500
;' role="presentation">n
≤2500;n
≤2500
;對於
100' role="presentation">100
100 的資料, n≤
200000
。' role="presentation">n
≤200000。n
≤200000
。
#include
using
namespace
std;
const
int maxn=2e5+10;
struct nodeedge[maxn*10];
int head[maxn*10];
bool vis[maxn];
int cnt;
int dfn[maxn],low[maxn];
void add(int x,int v)
int time;
int ans=0x3f3f3f3f;
stack
st;int num=0;
void tarjan(int u)
else
if(vis[v])
}if(low[u]==dfn[u])
if(num>1) ans=min(ans,num);
}}int read()
int main()
for (int i = 1; i <=n ; ++i)
for (int i = 1; i <=n ; ++i)
printf("%d\n",ans);
return0;}
P2661 資訊傳遞
題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...
P2661 資訊傳遞
題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...
P2661 資訊傳遞
並查集求解有向圖最小環 首先有個特殊要求的就是對於圖的邊是沒有長度的。然後我們採取乙個簡化操作,在找到這個環之間,由於只需要求環的長度,所以對於環的最後一條邊,不加入之前先判斷指向的點能不能最後指向原點。includeusing namespace std int n int ans 200050 ...