最大流問題

2022-08-15 00:18:17 字數 928 閱讀 7874

給你乙個圖,圖中有多少個頂點、點與點之間的距離(邊長)告訴你,求從s點到t點的最大流量是多少?

sample input

23 2

1 2 1

2 3 1

3 31 2 1

2 3 1

1 3 1

sample output

case 1: 1

case 2: 2

#include#include#includeusing namespace std;

#define n 90005

#define m 4000005

#define inf int_max

int s,t,num,pre[n],dis[n],gap[n],head[n],cur[n];

struct node

e[m];

inline void add(int u,int v,int w)

inline void addedge(int u,int v,int w)

inline int max(int a,int b)

inline int min(int a,int b)

}if(flag)

top=s;

maxflow+=aug;

aug=inf;}}

else}}

if(path[end]==-1) return -1;

return flow[m]; //一次遍歷之後的流量增量

} int edmonds_karp()

}return max_flow;

} int main()

start=1,end=m;

printf("%d\n",edmonds_karp());

}return 0;

}

最大流問題

暫時最大流問題我就先掌握這一種演算法吧 基本的最大流問題 ek演算法 基於bfs 每一次bfs更新一條路徑,雖然都會入佇列,但是由於以下條件保證點不會交叉,所以只有一條到終點的路徑會更新流量。if res v map u v flow u v 注意更新flow矩陣的時候是這樣的 while u st...

最大流問題

具體的最大流問題定義 術語以及特性,前人已經描述的很詳細了 我們需要注意以及幾個方面 增益路徑的生成次序如果不恰當,會對方法的效率有巨大的影響。如下 其中u代表某個大正整數。如果沿著路徑1 2 3 4對流量0進行增益,得到 b 中值為1的流量 接著沿著路徑1 3 2 4對流量0進行增益,得到 c 中...

最大流問題

對最大流問題比較感性的認識,要看證明還是要看演算法導論的相關章節。最大流問題 給定乙個有向圖,一般情況下邊的值為整數,定義不直接相連的節點間的邊值為0,如果有節點i和j直接由多條邊,則將這些邊合併為一條,值取和。則若i到j有邊,則j到i的邊為0,這些邊稱為反向邊。定義其中的兩個點位源點和匯點,則這個...