題目:poj-1273最大流模板題
code1:鏈式前向星(1)
#include
#include
#include
#define maxn 205
#define maxm 410
#define int_max 0x7fffffff
usingnamespace std;
int n,m;
struct nodeedge[maxm];
int cnt,head[maxn];
voidaddedge
(int from,
int to,
int c)
//這裡存的還是一條有向邊
intgap[
maxn],h
[maxn
],curedges
[maxn
],pre
[maxn
];
int start,end;
intsap_gap
()
}//增廣成功,尋找瓶頸邊
for(i=start; i!=end; i=edge[curedges[i]].to)
flow_ans+=cur_flow;
u=neck;
}
for(i=curedges[u]; i!=-
1; i=edge[i].next)
if(edge[i
].c&&h
[u]==h
[edge[i
].to]+1
)break
;//尋找可行弧
if(i!=-1)
//找到可行弧
else
//未找到可行弧
}
return flow_ans;
}
voidinit
()
}
intmain
()
return0;
}
code2:鏈式前向星(2)
#include
#include
#include
#defineinf
0x7fffffff
usingnamespace
std;
constintn
=205
;
constintm
=500
;//邊是雙向存的(注意不是無向)要開正常的2倍大
structedge
edge[m
];int
head[n
],cnt,n
,m,s
=1;
intpre[n],
cur[n],
dis[n],
gap[n];
voidaddedge
(intu,
intv
,intw)
//這裡存的還是一條有向邊
intsap()
aug=
inf;
}
break
;
}
}
if(flag
)//未找到可行邊
continue
;
intmindis=n
;
for(
intj
=head[u
];j!=-1;j
=edge[j
].next
)
}
if((--
gap[
dis[
u]])==0)
break
;
dis[u]=
mindis+1;
gap[
dis[
u]]++;
u=pre[u];
}
return
flow
;
}
voidinit
()
}
intmain
()
return
0;
}
code3:鄰接矩陣
#include
#include
#include
#define m 205
usingnamespace std;
constint inf=~0u>>1;
int n,nb,nc,m;
int gap[m],flow[m][m],dist[m],cur[m];int pre[m];
int source,end,s,t;
intsap()
goto loop;
}
}
int mind=n;
for(
int v=
1;v<=n;v++)
if(flow[u][v]&&(mind>dist[v]))
if((--
gap[
dist[u
]])==0)
break
;
gap[dist[u]=mind+1]++;
u=pre[u];
}
return maxflow;
}
voidinit
()
source=1;end=n;
}
intmain
()
return0;
}
最大流模版Dinic演算法
網路流的演算法有很多,最基礎的為ek演算法,他的時間複雜度為o n m 2 dinic演算法的時間複雜為o m n 2 dinic演算法是現構造層次圖,然後用阻塞流來增廣。構造層次圖有乙個bfs,增廣是用dfs來寫。詳細的講述請參考 劉汝佳寫的 演算法競賽入門經典訓練指南 大白書 include i...
網路流 最大流 模版 費用流 模版
給出乙個網路圖,以及其源點和匯點,求出其網路最大流。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...
poj2516(最小費用最大流模版)
首先就這題而言,各k互不影響,可以分開來算,累加即可 對於構圖來說,以後可以源點s 0,匯點t n m,其中一組點是1 n,另一組n 1 n m,注意可以這樣構圖 對於最小費用最大流,要用spfa來做最短路徑,只需記錄路徑即可 include include include include incl...