首先觀察到 用二分搜測試最低的權限
假設最低權限 x 是可以的,那就代表圖上所有權限 >x 以上的邊就不能動(題目意思),那這些邊組成的圖必定會是一個 DAG(用拓樸排序驗證
所以簡單來說就寫一個測試函式,裡面在做的事情就是把所有 >x 的邊組成一張圖(O(E)) 然後作拓樸排序 (O(V+E))
最多呼叫 lg(1e9) 大約 30 次 所以整體來說就是 O((V+E)*lg(1e9)) 很快就可以跑完 找到題目要的最小權重ㄌ
找到題目要的最小權重 k 後,一樣把這些 >k 的邊拿起來組成一張圖,剩下的 <=k 的邊就都可以隨意改 也就可以視為一條需要被定向的邊
所以這裡弄完會變成一張混和圖,需要把所有無向邊定向
就是跟這題一模一樣ㄌ https://codeforces.com/contest/1385/problem/E