Dinic重邊處理模板

2022-06-28 19:18:08 字數 1082 閱讀 8480

本題相比普通最大流題目只是多了乙個重邊的處理,意義不大,但還是想記錄一下,反正也花不了多少時間。

這裡的處理方式是使用二維陣列預處理邊集,將重邊合併,再將該二維陣列作為dinic的輸入,暫時沒有想到更好的處理方式,望大佬指教。

#include using namespace std;

#define fre freopen("data.in","r",stdin);

#define ms(a) memset((a),0,sizeof(a))

#define go(i,a,b) for(register int (i)=(a);(i)<(b);++(i))

#define rep(i,a,b) for(register int (i)=(a);(i)<=(b);++(i))

#define sf(x) scanf("%d",&(x))

#define reg register

typedef long long ll;

const int inf=(0x7f7f7f7f);

const int maxn=1e2;

const int maxm=1e3;

int n;

struct nodee[maxm<<1];

int head[maxn],cur[maxn],deep[maxn];

int cnt;

int m[100][100];

queueq;

inline void add(int x,int y,int w)

inline void in()

go(i,0,100)go(j,0,100)

if(m[i][j])

}inline bool bfs()}}

return deep[25];

}int dfs(int now,int nowflow)

}if(totflow<=0)deep[now]=-2;

return totflow;

}inline void dinic()

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

}int main()

dinic演算法模板

用於計算最大流,帶有當前弧優化 下面是對演算法的簡明概述 首先dinic演算法屬於增廣路演算法,通過不斷尋找從源點到匯點的增廣路來實現擴流,但想較之ford fulkerson演算法來說,dinic在尋找增廣路之前,將原圖進行分層處理,即 以源點為深度為零的點,不斷向下按照深度將原圖的點標記 並且永...

Dinic演算法模板

沒什麼好說的,建議直接背過。dinic的複雜度就是個笑話,跟放p一樣 看似 o n 2m 實則艹過 n 10 5,m 10 6 include using namespace std typedef long long ll const int n 1e4 10,m 2e5 10,inf 1e8 i...

最大流dinic模板

運輸問題1 輸入檔案 maxflowa.in 輸出檔案 maxflowa.out 簡單對比 時間限制 1 s 記憶體限制 128 mb 問題描述 乙個工廠每天生產若干商品,需運輸到銷售部門進行銷售。從產地到銷地要經過某些城鎮,有不同的路線可以行走,每條兩城鎮間的公路都有一定的流量限制。請你計算,在不...