模板 網路最大流

2022-03-01 12:42:32 字數 1467 閱讀 3490

——果斷附isap**

1 #include 2 #include 3 #include 4

5using

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 }

isap

其實我還沒搞懂,但是感覺**量好少!

然而——草,垃圾dfs,好多題都被卡,tm不用了!

但是迭代版的isap好像**量多的一匹,所以我還是學dinic吧,嗯,就這樣。

dinic**,有當前弧優化。

1 #include 2 #include 3 #include 4

5using

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 }

dinic

模板 網路最大流 最大流

給出乙個網路圖,以及其源點和匯點,求出其網路最大流。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 輸...