題解 LuoGu2661 資訊傳遞

2021-09-29 14:58:55 字數 554 閱讀 7576

原題傳送門

直接遍歷整張圖,若是走到已經走過的點,兩種情況

這個點是剛剛走過的,繞回來了,說明是個環,更新答案

這個點是以前走過的,那我就不用繼續走下去了,不然只是把前人的路途重新走了一遍無用功

code:

#include

#define maxn 200010

using

namespace std;

int n, nxt[maxn]

, vis[maxn]

, loop[maxn]

, tot;

inline

intread()

intmain()

if(vis[v]

)break

; vis[v]

= vis[u]

, loop[v]

= loop[u]+1

, u = v;}}

printf

("%d\n"

, ans)

;return0;

}

題解 P2661 資訊傳遞(tarjan)

這道題用來解決的方法很多,最近學了tarjan,所以我們不妨用tarjan來解決。我們將這個關係用有向圖的方式存下來,那麼答案就是這個圖里最小的環的大小。對於tarjan陣列,我們記錄dfn代表時間戳,low代表其強連通分量中的根的時間戳 大概吧 初始化dfn low index,然後把這個點存進棧...

P2661 資訊傳遞

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

P2661 資訊傳遞

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