網路流模版

2022-09-01 05:42:09 字數 1184 閱讀 8891

#include #include 

#include

#include

using

namespace

std;

const

int maxn=100010

;  //點的個數

const

int maxm=400010

;  //邊的個數

const

int inf=0x3f3f3f3f

;struct

edge

edge[maxm];

inttol;            //代表當前邊的條數(編號)

inthead[maxn];

intgap[maxn],dep[maxn],pre[maxn],cur[maxn];

//gap:和t的最短距離等於i的結點數量

//dep:每個點的層數(深度)

void

init()

void addedge(int u,int v,int w,int rw=0

)  //加邊,如果是單向邊的話,傳遞3個引數(邊的起始點,邊的終止點,邊容量大小),如果是雙向邊,最後乙個引數記錄反向邊的容量大小

int sap(int start,int end,int

n)    //start代表源點的編號,end代表匯點的編號,n代表總共點的個數,返回值ans代表最大流的流量大小

u=start;

ans+=min;

continue

; }

bool flag=false

;

intv;

for(int i=cur[u];i!=-1;i=edge[i].next)

}if(flag)

int min=n;

for(int i=head[u];i!=-1;i=edge[i].next)

}gap[dep[u]]--;

if(!gap[dep[u]])

return

ans;

dep[u]=min+1

; gap[dep[u]]++;

if(u!=start)

u=edge[pre[u]^1

].to;

}return

ans;

}

網路流 最大流 模版 費用流 模版

給出乙個網路圖,以及其源點和匯點,求出其網路最大流。dinic include include include define inf 1e9 using namespace std queue int q int n,m,s,t,cnt,x,y,w,dis 10001 last 200001 str...

費用流 網路流模版

費用流模版 include include includeusing namespace std const int maxm 100000 最大邊數 const int maxn 1000 最大點數 struct edge edge int a,int b,int c,int d,int e in...

hdu4280 網路流模版)

驗證了一下網路流的板子題 發現有乙個板子和kuangbin聚聚的板子效率相差不多可能還更高效 kuangbin聚聚寫的是非遞迴的 這個可能更容易敲一點 題目大意就是輸入n,m 找到s t 直接連圖求最大流 附鏈結 include include include include includeusin...