原題傳送門
直接遍歷整張圖,若是走到已經走過的點,兩種情況
這個點是剛剛走過的,繞回來了,說明是個環,更新答案
這個點是以前走過的,那我就不用繼續走下去了,不然只是把前人的路途重新走了一遍無用功
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同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...