最小費用流

2021-08-14 22:51:31 字數 2496 閱讀 3624

這是一道模板題。

給定 n 個點,m 條邊,給定每條邊的容量,求從點 s 到點 t 的最大流。

第一行四個整數 n、m、s、t。

接下來的 m 行,每行三個整數 u 、v 、c,表示 u 到 v ,流量為 c 的一條邊。

輸出點 s 到點 t 的最大流。

樣例輸入

7 14 1 7

1 2 5

1 3 6

1 4 5

2 3 2

2 5 3

3 2 2

3 4 3

3 5 3

3 6 7

4 6 5

5 6 1

6 5 1

5 7 8

6 7 7

樣例輸出 141

≤n≤10

6,1≤

m≤4×

106,0

≤c≤2

31−1

use dijstra, o(

fvlo

ge)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//#include

//#include

#include

using

namespace

std;

#define mp make_pair

#define pb push_back

#define se second

#define fi first

#define rep(i, n) for(int i = 0; i < n; ++i)

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef

double db;

typedef

long

double ldb;

typedef pair pii;

const

int mod = (int)1e9 + 7;

const

int inf = 0x3f3f3f3f;

const ll ll_inf = 0x3f3f3f3f3f3f3f3f;

const db pi = acos(-1.0);

const db eps = 1e-10;

/*const int maxs = 64 * 1024 * 1024;

char buf[maxs], *ch;

void read(int &x)

void read_init()

*/const

int maxv = 405;

const

int maxe = 15005;

int v, e;

struct edge

edge(const

int _to, const

int _cap, const

int _cost, const

int _nxt)

}dat[maxe<<1];

int head[maxv], tail;

void add_edge(int from, int to, int cap, int cost)

int pre[maxv], h[maxv], dist[maxv];

int min_cost_flow(int s, int t, int &f) }}

if(dist[t] == inf) return res; // return -1

for(int v = 0; v < v; ++v) h[v] += dist[v];

int d = f;

for(int v = t; v != s; v = dat[pre[v]^1].to)

f -= d;

res += d * h[t];

for(int v = t; v != s; v = dat[pre[v]^1].to)

}return res;

}int main()

int f = inf;

int min_cost = min_cost_flow(s, t, f);

printf("%d %d\n", inf - f, min_cost);

return

0;}

最小費用流

include include define maxn 61 define maxv maxn maxn 2 1 define maxe maxv 5 define oo 2147483647 define min a,b a b b a define maxq maxe using namespa...

最小費用流

int v 頂點數 vector g max v int dist max v 最短距離 int prev max v 最短路中前驅結點對應的點 int pree max v 最短路中前驅結點對應的邊 void addedge int from,int to,int cap,int cost 求從s...

最小費用流

acm模版 最小費用流 o v e f init network g g.build v,e call g.mincost s,t flow g.flow cost g.cost 注意 spfa增廣,實際複雜度遠遠小於o v e define typef int type of flow defin...