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

2021-08-20 21:41:32 字數 1419 閱讀 8733

給出乙個網路圖,以及其源點和匯點,求出其網路最大流。

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];

struct nodee[

200001];

void

add(

int x,

int y,

int w)

//鄰接表

bool

bfs(

)//找增廣路,建立分層圖

}return0;

}int

dfs(

int x,

int maxf)if(

!rest) dis[x]=-

1;//如果根本沒用流量就標記

return rest;

}int

dinic()

intmain()

printf

("%d"

,dinic()

);//直接dinic

}

給出乙個網路圖,以及其源點和匯點,每條邊已知其最大流量和單位流量費用,求出其網路最大流和在最大流情況下的最小費用。

spfa + 統計

#include#include#includeusing namespace std;

const int n=100050;

const int inf=1e9;

int n,m,cnt,last[5001],s,t,dis[5001],vis[5001],pre[5001],ans,sum,cf[5001];

struct nodee[100050];

queueque;

void add(int u,int v,int c,int w)//鄰接表

bool spfa()//spfa最短路不解釋

{ for (int i=1;i<=n;i++) dis[i]=inf;

dis[s]=0;que.push(s);vis[s]=1;cf[s]=inf;

while (!que.empty())

{int u=que.front();que.pop();

for (int i=last[u];~i;i=e[i].next)

if (e[i].c&&dis[u]+e[i].w解題思路寫的短不是因為我懶,是因為這兩題都是模版題,並沒有什麼特別的地方好講,只要明白最大流&費用流這兩題就能做出來,不像假期的宿舍,建邊什麼的比這些複雜,這個套乙個模版的事情不想多說,沒有什麼必要。

費用流 網路流模版

費用流模版 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...

網路流模版

include include include include using namespace std const int maxn 100010 點的個數 const int maxm 400010 邊的個數 const int inf 0x3f3f3f3f struct edge edge ma...

網路流 費用流 最大流最小割定理

囧,今天第一天電腦競賽補課,就把最大流的bfs增廣 先流預推法 最大流最小割定理 最小費用流講完了。汗。而我,就只記住了bfs增廣和最大流最小割定理。最小費用流ms差不多明白了。所以先講講bfs增廣求最大流的演算法吧。簡單的來說,就是從s 源 開始bfs,直到到達t 匯 or不存在增廣路。所謂增廣路...