网络流-SAP算法模板
生活随笔
收集整理的這篇文章主要介紹了
网络流-SAP算法模板
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
node 表示當前討論到的節點; flow 表示該節點被傳入/要傳出的流量;s, t, ver 分別是起點,終點,節點總數; SAP 函數返回增廣路成功增大的流量; dlt 是當前已傳出的流量; c 是殘量。
1 const int INF = ~0U >> 1; 2 3 int SAP(int node, int flow) 4 { 5 if (node == t) 6 return flow; 7 int p, tmp, dlt = 0; 8 for (p = fst[node]; p; p = nxt[p]) { 9 if (w[p] <= 0 || dis[v[p]] + 1 != dis[node]) 10 continue; 11 tmp = dfs(v[p], min(flow - dlt, c[p])); 12 c[p] -= tmp; 13 c[p + 1] += tmp; 14 if ((dlt += tmp) == flow || dis[s] == ver) 15 return dlt; 16 } 17 if (!--cnt[dis[node]]) 18 dis[s] = ver; 19 ++cnt[++dis[node]]; 20 return dlt; 21 } 22 23 int main() 24 { 25 /* input */ 26 while (dis[s] < ver) 27 ans += SAP(s, INF); 28 printf("%d\n", ans); 29 return 0; 30 }?
轉載于:https://www.cnblogs.com/ghcred/p/5720053.html
總結
以上是生活随笔為你收集整理的网络流-SAP算法模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openlayers+vue水流图
- 下一篇: 对象转换 json 字符串和 json转