//dinic
struct edge };
vector g[max_v]
;int level[max_v]
;int iter[max_v]
;//當前弧優化
void
add_edge
(int from,
int to,
int cap)
//通過bfs計算從源點出發的距離標號
void
bfs(
int s)}}
}//通過dfs尋找增廣路
intdfs
(int v,
int t,
int f)}}
return0;
}//求解從s到t的最大流
intmaxflow
(int s,
int t)
}}
//ford-fulkerson
struct edge };
vector g[max_v]
;bool used[max_v]
;void
add_edge
(int from,
int to,
int cap)
//dfs尋找增廣路
intdfs
(int v,
int t,
int f)}}
return0;
}//多次增廣 直到沒有增廣路
intmax_flow
(int s,
int t)
}
const
int inf =
0x3f3f3f3f
;const
int n =
210000
;struct node p[n *10]
;int dis[n]
;int head[n]
;int cnt;
void
add(
int from,
int to,
int cap)
bool
bfs(
int s,
int t)}}
return dis[t]!=-
1;}int
dfs(
int x,
int t,
int f)
return sum;
}int
dinic
(int s,
int t)
return flow;
}
網路流模板
鄰接矩陣 include include include using namespace std const int inf 1 30 const int point num 300 int cap point num point num dist point num gap point num 初...
網路流模板
最大流 最小割 演算法 最小割就是刪掉權值最小的邊讓源點和匯點分別分在兩個不連通的集合 就是把圖分成兩個集合,保證源點和匯點不連通,可以解決刪掉權值最小的邊刻意讓某些點和另外點孤立,也就是堵住前面點到匯點的去路 增廣路edmondskarp演算法 n m 2 n是點數,m是有向邊數 define r...
網路流模板
最大流 include include include include include include using namespace std define clr a x memset a x sizeof a const int maxm 1005 const int maxn 20 const...