【網路流】Link-Cut Tree優化網路流Dinic演算法
偶然在知乎上看到的一篇文章中提到了用動態樹優化Dinic的思路,遂記錄此隨筆方便之後學習。
Dinic演算法是一個非常優秀的解決網路流模型的演算法,然而時間複雜度上界是O(V2E),有可能會被毒瘤出題人卡掉。
使用LCT可以優化Dinic演算法來達到優秀的O(VElogV)的複雜度上界。
我們只需要實現4個操作就可以實現快速增廣了。
1、加邊:每次增廣時加邊直到源匯點在一顆樹內
2、尋找路徑最小值:找到增廣路後尋找增廣路上餘量最小的邊
3、路徑修改:將增廣路上的邊全部減少增廣的流量
4、刪邊:刪去餘量為零的邊
以上四個操作用LCT化邊為點即可完成。
相關推薦
【網路流】Link-Cut Tree優化網路流Dinic演算法
偶然在知乎上看到的一篇文章中提到了用動態樹優化Dinic的思路,遂記錄此隨筆方便之後學習。 Dinic演算法是一個非常優秀的解決網路流模型的演算法,然而時間複雜度上界是O(V2E),有可能會被毒瘤出題人卡掉。 使用LCT可以優化Dinic演算法來達到優秀的O(VElogV)的複雜度上界。 我們只需要實現
luoguP3690 【模板】Link Cut Tree (動態樹)[LCT]
格式 %d getch logs cstring name flag -1 處理 題目背景 動態樹 題目描述 給定N個點以及每個點的權值,要你處理接下來的M個操作。操作有4種。操作從0到3編號。點從1到N編號。 0:後接兩個整數(x,y),代表詢問從x到y的路徑上的
luogu P3690 【模板】Link Cut Tree (動態樹)
clu pda col make class getchar() root 動態樹 pan https://www.luogu.org/problemnew/show/3690 這大概還是一道模板題目 #include<cstdio> #include
【模板】Link-Cut Tree
-a get maker std rotate bool pri name 圖片 1 #include<cstdio> 2 #include<algorithm> 3 #define N 500010 4 #define ls (c[
luogu3690 【模板】Link Cut Tree (動態樹)
pre class HR name print () OS 模板 pushd 參考there和there #include <iostream> #include <cstdio> using namespace std; int n, m, val
LUOGU P3690 【模板】Link Cut Tree (lct)
傳送門 解題思路 \(lct\)就是基於實鏈剖分,用\(splay\)來維護每一條實鏈,\(lct\)的維護物件是一棵森林。\(lct\)支援很多神奇的操作: \(1、\) \(access\):這是\(lct\)的核心操作,就是將一個點與根打通,就是把路徑上的所有邊變成實邊,具體就是轉到根,換兒子
2018.10.07 洛谷P3690 【模板】Link Cut Tree (lct)
傳送門 lct模板題。 學習了新姿勢: 判斷一條邊是否已經存在的方法。 感覺其它都跟洞穴勘探差不多。 程式碼: #include<bits/stdc++.h> #define N 30000
【洛谷 P3690】 【模板】Link Cut Tree (動態樹)
shu root org www getch .com std void swap 題目鏈接 \(RT\)。 FlashHu巨佬的博客 #include <cstdio> #define R register int #define I inline void
洛谷P3690 【模板】Link Cut Tree (動態樹)
不開o2優化就要TLE,不知道為啥。 //#include <bits/stdc++.h> #pragma GCC optimize(2) #include<stdio.h> #include<string.h> #include&l
P3690 【模板】Link Cut Tree (動態樹)
rev access cst href pan == www wap swa P3690 【模板】Link Cut Tree (動態樹) 註意:不 要 把 $fa[x]$和$nrt(x)$ 混 在 一 起 ! #include<cstdio> void
【BZOJ3669】【Noi2014】魔法森林(Link-Cut Tree)
沒有 力量 表示 cto ota code 描述 queue str 【BZOJ3669】【Noi2014】魔法森林(Link-Cut Tree) 題面 題目描述 為了得到書法大家的真傳,小 E 同學下定決心去拜訪住在魔法森林中的隱 士。魔法森林可以被看成一個包含 n 個節
【BZOJ2816】【ZJOI2012】網絡(Link-Cut Tree)
max 三種 ++i error 如果 描述 信息 logs fat 【BZOJ2816】【ZJOI2012】網絡(Link-Cut Tree) 題面 題目描述 有一個無向圖G,每個點有個權值,每條邊有一個顏色。這個無向圖滿足以下兩個條件: 對於任意節點連出去的邊中,相同顏
【Luogu1501】Tree(Link-Cut Tree)
mes .org for put efi access stream return bool 【Luogu1501】Tree(Link-Cut Tree) 題面 洛谷 題解 \(LCT\)版子題 看到了順手敲一下而已 註意一下,別乘爆了 #include<iostre
【BZOJ4530】大融合(Link-Cut Tree)
數據 ota mes read names 編號 ble pla str 【BZOJ4530】大融合(Link-Cut Tree) 題面 討厭權限題!!! Loj鏈接 題目描述 小強要在 N個孤立的星球上建立起一套通信系統。這套通信系統就是連接 N個點的一個樹。這個樹的邊是
【BZOJ2959】長跑(Link-Cut Tree,並查集)
php www main inline body lin maker www. ota 【BZOJ2959】長跑(Link-Cut Tree,並查集) 題面 BZOJ 題解 如果保證不出現環的話 妥妥的\(LCT\)傻逼題 現在可能會出現環 環有什麽影響? 那就可以沿著環把
【BZOJ2555】SubString(後綴自動機,Link-Cut Tree)
cstring 一個 put ostream bzoj2555 subst get ini void 【BZOJ2555】SubString(後綴自動機,Link-Cut Tree) 題面 BZOJ 題解 這題看起來不難 每次要求的就是\(right/endpos\)集合的
【SPOJ】QTREE6(Link-Cut-Tree)
string algorithm getc 個數 AC 強制 main struct 優化 【SPOJ】QTREE6(Link-Cut-Tree) 題面 Vjudge 題解 很神奇的一道題目 我們發現點有黑白兩種,又是動態加邊/刪邊 不難想到\(LCT\) 最爆力的做法,顯
【SPOJ】QTREE7(Link-Cut Tree)
multi log poj == std CP IT gin www 【SPOJ】QTREE7(Link-Cut Tree) 題面 洛谷 Vjudge 題解 和QTREE6的本質是一樣的:維護同色聯通塊 那麽,QTREE6同理,對於兩種顏色分別維護一棵\(LCT\) 每次只
【學習筆記】LCT link cut tree
oot 提取 安利 IV ace -- CA roo 自己 大概就是供自己復習的吧 1、 細節講解 安利兩篇blog: Menci 非常好的講解與題單 2、模板 把 $ rev $ 和 $ pushdown $ 的位置記清 #
【動態樹】【Link Cut Tree】動態樹的理解(入門)
引入 現在我們需要一個數據結構滿足支援以下的操作: 兩個節點連線(保證不出現環) 兩個節點斷開 求任意兩個節點之間的區間和 這樣是不是很像樹鏈剖分? 但是因為是動態的所以我們採用動態樹來進行維護。 樣例 現在給出一個樣例,我們一下的解釋都以當前