傳遞閉包的正確姿勢

2021-10-05 20:09:11 字數 610 閱讀 7095

就是給你乙個有向圖,詢問所有點對之間的可達性。

直接floyed的複雜度為o(n

3w

)o(\frac)

o(wn3​

)。同時由於floyed的列舉有後繼性,因此不能使用4毛子優化

考慮先縮掉scc,使得圖變為乙個dag。按照拓撲序逆序構造答案。

此時由於狀態不存在後繼性,因此可以對中間點每b

bb個分塊,每塊預處理2

b2^b

2b個集合的出邊。

詢問時查詢n

b\frac

bn​個整塊預處理出來的值即可。

取b =o

(log⁡n

)b=o(\log n)

b=o(

logn

)時時間複雜度o(n

3w

log⁡n)

o(\frac)

o(wlognn

3​)。

如果逆序列舉中間的塊進行轉移可以把記憶體卡到o(n

2)

o(n^2)

o(n2)。

由於tarjan執行時已經求出拓撲序因此無需重複排序。

**鏈結

資料範圍太小可能無法顯示優越性。

flord 傳遞閉包

傳遞指對於乙個節點i,如果j能到i,i能到k,那麼j就能到k。傳遞閉包,就是把圖中所有滿足這樣傳遞性的節點都弄出來,計算完成後,我們也就知道任意兩個節點之間是否相連。break 指跳出一層迴圈 continue 結束本次迴圈,跳過本次判斷語句 每只奶牛的技能獨一無二,如果給奶牛們排序的話,能確定自己...

floyd傳遞閉包

傳遞閉包 我第一反應是凸包emmm 就是把具有傳遞性的關係傳遞開。一般我們用一鄰接矩陣儲存。比如許多的並查集解決的問題,如果需要細緻 效率o n 可以用傳遞閉包去做。看一道題吧,poj1094,不等式的傳遞性。這道題在處理方面,d i,j 為1時表示i1 矛盾與不確定,優先矛盾。2 若加入了幾個,發...

閉包傳遞(floyed)

題目大意 n代表母牛的個數,m代表給定的資訊的組數。每一組數包括a,b.代表b崇拜a 突然發現可以用tarjan演算法做 然後問你最終有多少母牛的地位是確定的。include include include include include include include include includ...