網路流一 最大流EK演算法(bfs)

2021-10-03 11:51:28 字數 1175 閱讀 4305

//poj 1273  // 

//網路流最大流ek演算法

// 時間複雜度上限為nm^2

#include

#include

#include

#include

using

namespace std;

#define maxn 0x7fffffff

int n, m;

int gra[

210]

[210]=

;int pre[

210]=;

int flow[

210]=;

//記錄源點到這個點的流量

queue<

int>qu;

int flowmax =0;

// 累加最大流

intread()

while

(ch <=

'9'&& ch >=

'0')

return x * w;

}int

bfs(

int s,

int t)

// 尋找增廣路

// 代價小 直接迴圈清

for(

int i =

1; i <= n; i++)

pre[s]=0

;// 考慮存在一條路重新回到s

flow[s]

= maxn;

// 便於更新增廣路上的flow

qu.push

(s);

while

(!qu.

empty()

)}}if

(pre[t]==-

1)return flow[t];}

voidek(

int s,

int t)

// 通過pre更新

int now = t;

while

(now != s)

flowmax +

= increase;}}

intmain()

ek(1, n)

;printf

("%d\n"

, flowmax);}

return0;

}

網路流最大流 EK演算法

網路流是模仿水流解決生活中類似問題的一種方法策略,來看這麼乙個問題,有乙個自來水廠s,它要向目標t提供水量,從s出發有不確定數量和方向的水管,它可能直接到達t或者經過更多的節點的中轉,目前確定的是每條水管中水流的流向是確定的 單向 且每個水管單位時間內都有屬於自己的水流量的上限 超過會爆水管 問題是...

網路流 最大流演算法之EK

首先是網路流中的一些定義 v表示整個圖中的所有結點的集合.e表示整個圖中所有邊的集合.g v,e 表示整個圖.s表示網路的源點,t表示網路的匯點.對於每條邊 u,v 有乙個容量c u,v c u,v 0 如果c u,v 0,則表示 u,v 不存在在網路中。相反,如果原網路中不存在邊 u,v 則令c ...

網路流之最大流演算法模板EK

include include include include using namespace std int maxdata 0x7fffffff int capacity 200 200 c 1000 1000 c i j 儲存初值,因為每次計算都會改變capacity i j 的值,capac...