最大流筆記

2021-09-14 03:42:05 字數 761 閱讀 3721

看了乙個下午,似懂非懂就是不懂啊。。

先碼住!建圖也是巨難啊!!

大概思路是bfs:

每次bfs都過一遍,如果還可以找到增廣路就記錄答案

每次整理答案的時候加上去,同時乙個奇妙的操作:前驅加後繼減。

我個人理解覺得和dfs完了取消標記一樣的感覺,就是為了消除這一步對以後的行為造成的影響,方便找到最優解。`

1.儲存

struct p flow[maxn]

;//沒毛病

for(

int i=

1;i<=m;i++

)

2.重點 然而我不會啊

//大概思路 ek(start,end) 如果還能找到就更新

intek

(int s_pos,

int e_pos)

for(

int i=e_pos;i!=s;i=flow[pre[i]

].s)

max_flow+

=minn;

}return max_flow;

}

bfs具體實現

bool  bfs

(int s,

int e)

} */

for(

int i=

1;i<=

2*m;i++)}

}return0;

}

這樣還是會超時,待我再看一看。

最大流筆記

參考博文位址 本文是小白學習記錄之用 流量 一條邊當前承受的水量,每條邊 弧都會有乙個流量,表示為函式 f u,v 流量可為 0,可為負 容量 一條邊可以承受的最大水量,每條邊 弧都會有乙個容量,表示為函式 c u,v 殘留容量 一條邊還可以新增加的水量,即為 容量 流量 流動前 1是容量,0是流量...

最大流 學習筆記

這裡總結一下幾種最大流演算法 ek演算法應該是最大流中最簡單的了,但剛開始理解也花了不少工夫 ek演算法基於增廣路。它的思想是,每一次通過bfs不停尋找增廣路,找到以後增廣,直到找不到為止 殘量 一條邊的殘量等於該邊的容量減去該邊當前的流量,為了方便,我們可以建立殘量網路。這樣每條邊只需要對應乙個權...

最大流學習筆記(2)

1 基本的ford fulkerson方法。該方法的思想就是每次找到乙個增廣路 p 然後將增廣路 p 對應的流加到之前的流上得到新的流,一直這樣直到找不到增廣路,這時候找到的流就是最大流。演算法的偽 如下 假設容量是整數,最大流為 f 那麼while迴圈最多執行 f 次,因為每次至少使得流量增加1,...