本題相比普通最大流題目只是多了乙個重邊的處理,意義不大,但還是想記錄一下,反正也花不了多少時間。
這裡的處理方式是使用二維陣列預處理邊集,將重邊合併,再將該二維陣列作為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 問題描述 乙個工廠每天生產若干商品,需運輸到銷售部門進行銷售。從產地到銷地要經過某些城鎮,有不同的路線可以行走,每條兩城鎮間的公路都有一定的流量限制。請你計算,在不...