看了乙個下午,似懂非懂就是不懂啊。。
先碼住!建圖也是巨難啊!!
大概思路是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,...