洛谷 3376 網路流模板 EK Dinic

2021-09-02 02:16:17 字數 1475 閱讀 1267

給你乙個網路圖,以及源點和匯點,求最大流先讀入乙個有向圖,記錄源點到每個節點的流量,每個節點的前驅

從匯點倒著用bfs尋找增廣路徑(1次只找一條),最後算出最大流

話說從源點開始,記錄後繼也可以

讀入順序

因為是單向圖,所以判斷now和i之間有連線時,只能取e[now][i]

#include

#include

#define maxn 2005

#define inf 0x3f3f3f3f

using

namespace std;

int n, m, s, t, maxflow =0;

int e[maxn]

[maxn]

, flow[maxn]

, pre[maxn]

;int

bfs(

int s,

int t)}if

(pre[t]==-

1)return-1

;else

return flow[t];}

voidek(

int s,

int t)

maxflow +

= inc;}}

intmain()

ek(s, t)

;printf

("%d\n"

, maxflow)

;return0;

}

ek的優化,用bfs預處理分層,用dfs找增廣路徑開始cnt必須=-1,因為cnt ^ 1即為cnt的反向邊

若cnt=0,1^1\(\not\) = 2

#include

#include

#include

#define maxn 1000005

#define inf 0x3f3f3f3f

using

namespace std;

struct nodee[maxn]

;int n, m, s, t, maxflow =

0, cnt =-1

;int deep[maxn]

, head[maxn]

;void

addedge

(int u,

int v,

int len)

; head[u]

= cnt;

}bool

bfs()}

}return

(deep[t]!=0

);}int

dfs(

int cur,

int ans)}}

return0;

}void

dinic()

}int

main()

dinic()

;printf

("%d\n"

, maxflow)

;return0;

}

洛谷3376 網路最大流

題目描述 如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入輸出格式 輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸...

洛谷P3376 最大網路流模板

如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入輸出格式輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸出格式 一行...

教輔的組成 洛谷1231 網路流

滾粗了的hansbug在收拾舊語文書,然而他發現了什麼奇妙的東西。蒟蒻hansbug在一本語文書裡面發現了一本答案,然而他卻明明記得這書應該還包含乙份練習題。然而出現在他眼前的書多得數不勝數,其中有書,有答案,有練習冊。已知乙個完整的書冊均應該包含且僅包含一本書 一本練習冊和乙份答案,然而現在全都亂...