網路流模板

2021-10-01 03:35:06 字數 1340 閱讀 7793

//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...