hdu1532 網路流最大流問題

2022-05-02 22:30:29 字數 867 閱讀 5729

這是我的網路流第一題,用的是增廣路演算法即ek演算法,演算法思想:每次用bfs找一條最短的增廣路徑,然後沿著這條路徑修改流量值(實際修改的是殘量網路的邊權),順帶修改反圖的殘餘網路的邊權。當沒有增廣路時,演算法停止,此時的流就是最大流。

。還有這裡之所以要建反圖是因為,bfs找最短的增廣路的時候是隨機找的,找的可能不是最』優『的,那麼就會影響最後我們能得到的最大流,這個時候反圖就派上用場了,它可以彌補我們之前找最短增廣路時犯下的錯誤,也就是說即使我們之前找的增廣路有些可能不是最優的,但是沒關係,有反圖在,我們最後依然可以得到最大流。

推薦幾篇入門部落格:

#include//ek演算法

#include#include#includeusing namespace std;

#define maxn=300;

#define inf=0x3f3f3f3f;

int m,n;

int mp[maxn][maxn];//用於儲存正圖和反圖

int maxflow;

int flow[maxn];//flow表示找增廣路的過程中的節點的流入值

bool vis[maxn];

int father[maxn];//用於回溯建反圖用

void init()

void solve(int s,int e)

}if(flow[e]>0)

break;}}

if(flow[e]==0) break;

maxflow+=flow[e];

}}int main()

solve(1,n);

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

}return 0;

}

hdu 1532最大流 增廣路

include include include includeusing namespace std define max 210 int flow max max int pre max mark max int n,m,f int q,z void maxliu if mark n 如果mark...

最大流模板題 HDU 1532

hdu 1532 題意 給你m條邊 但向邊 n個點,n個點的編號為1到n,問從1到n的最大流是多少。最大流模板題,聽說有重邊,但是沒管重邊這個事也過了。dinic演算法 include define mem a,b memset a b,sizeof a define de coutvoid add...

hdu1532 最大流板子題

題目給出源點和漏點,還有一些邊,要求源與漏之間的最大流,我採用了edmonds karp演算法,該演算法是ford fulkerson演算法的一種實現,該演算法的關鍵技術是殘留網路和殘留網路上的反向邊,相當於給了搜尋策略乙個 反悔 的機會,演算法的實行過程是每次都尋找一條源點到漏點的增廣路徑,算出流...