基本思路
**實現
#include #include #include #include using namespace std;
const int maxn = 100;
const int maxm = maxn*maxn;
const int inf = 0x3f3f3f3f;
int head[maxn], next[maxm], ver[maxm], edge[maxm], flow[maxm];
int tot;
void init()
void add(int x, int y, int z, int f)
void add2(int x, int y, int z)
int ss, tt, res[maxn], pre[maxn], v[maxn], pre_index;
int bfs()
}} }
return 0;
}int ek()
ans+=f;
f = bfs();
if(f == 0) break;
} return ans;
}int main()
cout << ek() << endl;}/*
6 81 4
1 6 2
6 5 1
5 4 3
3 4 2
1 4 3
2 3 1
1 2 2
1 3 2
*/
遇到問題
死迴圈鄰接表的終止值是0還是-1需要考慮清楚
bfs搜尋錯誤
由於可能出現環,需要標記進入佇列的點,借用spaf演算法的標記方式,保證不因為環而死迴圈
網路流學習筆記
先宣告,來自網路,寫得也比較亂,如果有任何問題可以聯絡博主。首先,我們來理解下網路流。在乙個有向圖上選擇乙個源點,乙個匯點,每一條邊上都有乙個流量上限 以下稱為容量 即經過這條邊的流量不能超過這個上界,同時,除源點和匯點外,所有點的入流和出流都相等,而源點只有流出的流,匯點只有匯入的流。這樣的圖叫做...
網路流 學習筆記
略。update 我發現我的最大流一直是寫錯的!寫錯一年了!這一年居然沒有被卡真是奇蹟 void dedge int sta,int edn,lon w fst sta ecnt void edge int sta,int edn,lon w bool bfs return 0 lon dfs in...
網路流學習筆記(2)
最小費用最大流 在保證最大流的前提下,讓費用最小。我們有兩種思路 1.先保證流最大,再去找費用最小的。2.保證費用最小,去找最大流。通常情況下我們會選擇第二種。我們想一下最大流是怎麼做的,bfs分層圖然後dfs每次只找深度 1的去增廣。如果我們要保證最小費用呢?每次去找費用最小的增廣。我們可以spf...