給你乙個圖,圖中有多少個頂點、點與點之間的距離(邊長)告訴你,求從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,這些邊稱為反向邊。定義其中的兩個點位源點和匯點,則這個...