給你乙個網路圖,以及源點和匯點,求最大流先讀入乙個有向圖,記錄源點到每個節點的流量,每個節點的前驅
從匯點倒著用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在一本語文書裡面發現了一本答案,然而他卻明明記得這書應該還包含乙份練習題。然而出現在他眼前的書多得數不勝數,其中有書,有答案,有練習冊。已知乙個完整的書冊均應該包含且僅包含一本書 一本練習冊和乙份答案,然而現在全都亂...