網路流 費用流zkw演算法

2022-05-20 01:33:21 字數 729 閱讀 8513

進行spfa每次對殘餘網路求最短路,記錄前驅,然後跑這條增廣路,更新答案,直到源點和匯點不連通位置

我們可以類似dinic,在spfa求完每個點到源點的距離之後,再像dinic一樣進行增廣,這樣就能多路增廣,並且還可以加當前弧優化。

#include using namespace std;

const int maxn = 5e3 + 5;

const int inf = 0x3f3f3f3f;

int n, m;

struct edge

};edge *head[maxn];

void addedge(int u, int v, int w, int c)

namespace zkw}}

}return dis[t] < inf;

}int dfs(int u, int flow)

int used = 0; vis[u] = true;

for (edge *e = head[u]; e; e = e->next)

if (used == flow) break;}}

return used;

}void work() }}

}int main()

zkw :: work();

cout << zkw :: res << ' ' << zkw :: ans << endl;

return 0;

}

費用流演算法 ZKW

連續研究了幾天的費用流,乙個屬於自己版本的zkw費用流出爐了。zkw神牛發明的zkw演算法可以說是編寫簡單,速度也非常不錯。個人還給zkw加了乙個當前弧優化,km演算法中的鬆弛變數優化與連續增廣優化,不過加了這些優化後zkw的全部過程也只有30行。感覺上zkw就是優化了spfa求最短路的過程,因為s...

餐巾計畫問題 網路流24題 費用流 zkw

乙個餐廳在相繼的 nn 天裡,每天需用的餐巾數不盡相同。假設第 ii 天需要 r iri 塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用為 pp 分 或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分 或者送到慢洗部,洗一塊需 nn 天 n mn m 其費用為 ss 分 ss ...

網路流 費用流

這個好像不考 沒事可以騙分 費用流,顧名思義,就是有費用的流,也就是說,給乙個網路流圖中的每條弧增加乙個單位流量費用。一般來說求解的費用流都是最大流最小費用。好像沒什麼好bb的 這裡推薦使用zkw演算法求解最小費用流,看著 理解就行,應該還是很好理解的。zkw演算法在稠密圖上跑得飛快,在稀疏圖上還不...