——果斷附isap**
1 #include 2 #include 3 #include 4isap5using
std::min;67
const
int maxn = 200001;8
9int n, m, cnt, maxflow, s, t;//
s為起點,t為終點
10int head[maxn], next[maxn], to[maxn], val[maxn], gap[maxn], dis[maxn];//
gap記錄當前有多少點標號(層號)為k
1112 inline void add(int x, int y, int
z)13
1920 inline int dfs(int u, int
flow)
2132
if(!--gap[dis[u]]) dis[s] =n;
33 ++gap[++dis[u]];
34return flow -ret;35}
3637
intmain()
3848
for(gap[s] = n; dis[s] < n;) maxflow +=dfs(s, 1e9);
49 printf("%d"
, maxflow);
50return0;
51 }
其實我還沒搞懂,但是感覺**量好少!
然而——草,垃圾dfs,好多題都被卡,tm不用了!
但是迭代版的isap好像**量多的一匹,所以我還是學dinic吧,嗯,就這樣。
dinic**,有當前弧優化。
1 #include 2 #include 3 #include 4dinic5using
namespace
std;67
intn, m, cnt, ans;
8int head[10001], to[200001], val[200001], next[200001], dis[10001], cur[10001];9
10void add(int x, int y, int
z)11
1718
int dfs(int u, int t, int
maxflow)
1934}35
return
ret;36}
3738
bool bfs(int s, int
t)3958}
59}60return0;
61}6263
intmain()
6474
//dinic
75while
(bfs(s, t))
7680 printf("%d"
, ans);
81return0;
82 }
模板 網路最大流 最大流
給出乙個網路圖,以及其源點和匯點,求出其網路最大流。in put role presentation inp utin put4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40ou tput role presentation out puto utpu t50最大...
模板 網路最大流 最大流
給出乙個網路圖,以及其源點和匯點,求出其網路最大流。in put role presentation inp utin put4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40ou tput role presentation out puto utpu t50最大...
模板 網路最大流
題目描述 如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入輸出格式 輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸...