洛谷P4043 費用流

2021-10-08 11:26:02 字數 2764 閱讀 2837

這題的建圖方式可以模擬洛谷p1251

我是由那個題才想到這麼建的,由於每條邊至少經過一次,我們又不清楚需要跑多少次,把邊看成點,點與匯點相連,可是我們又不知道最大流應該是多少,直接這麼連會發生錯誤。利用那道題的思想,每條邊最少需要一次,那麼就每條邊看做兩個點,點1和點2,點1有1的流量流向匯點,點2接受源點的1的流量,這是乙個補流的過程。利用補流的過程和把邊拆成兩個點,我們就可以跑出來最大流是邊數的最小費用。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ui unsigned int

//ios::sync_with_stdio(false);

#define max(a,b) ((a)>(b)?(a):(b))

#define min(a,b) ((a)

#define ull unsigned long long

#define endd puts("");

#define re register

#define endl "\n"

#define ll long long

#define double long double

#define il inline

using

namespace std;

#define pi 3.1415926535898

const

double eqs =

1e-6

;const

long

long max_ =

1000000+7

;const

int mod =

1e9+7;

const

int inf =

1e9+7;

const

long

long inf =

2e18+7

;inline

intread()

while

(ch >=

'0'&&ch <=

'9')

return s * f;

}inline

void

write

(int x)

if(x >9)

write

(x /10)

;putchar

(x %10+

'0');}

int head[max_]

, xiann =2;

struct kk kk(

int to,

int next,

int flow,

int val):to

(to)

,next

(next)

,flow

(flow)

,val

(val)

}xian[max_ <<1]

;il void

add(

int a,

int b,

int c,

int d)

*/ xian[xiann]=kk

(b, head[a]

, c, d)

; head[a]

= xiann;

xiann++;}

int cur[max_]

, dis[max_]

, n =

0, que[max_]

, l, r;

int s, t;

bool vis[max_]

;bool

spfa()

l =1, r =0;

que[

++r]

= s; vis[s]=1

; dis[s]=0

;while

(l <= r)}}

}return dis[t]

!= inf;

}int mincost, maxflow;

intdfs

(int now,

int flow)

} vis[now]=0

;return tot;

}void

dinic()

}il void

addedge

(int a,

int b,

int c,

int d)

vector

int,

int>

> ask[

700]

;map<

int, pair<

int,

int>

>mp;

il void

ini()}

s =0; n = t =

++idn;

addedge

(s,1

, inf,0)

;for

(i =

1; i <= n; i++)}

dinic()

; cout << mincost;

}signed

main()

洛谷P4043 支線劇情

題意 給定dag,通過每條邊需要時間。從某號點回到1號點不需要時間。從1號點出發,求最少要多久才能走完所有邊。解 有源匯有上下界最小費用可行流。直接連邊,費用為時間,下界為1,無上界。每個點都可能是終點,往t連邊。1 include 2 include 3 include 4 include 5 6...

最小費用流 洛谷P2053

傳送門 教練我想學數學建模。網路流和最小費用流的題目不存在 難度,不存在變形 目前來說是的,不知道是不是我沒做過對於模板修改的題目 難度主要在於,你能看出來它是個網路流,並且還能正確的建模。大喊一句,教練我想學數學建模!這個題目建模不是很簡單。首先,我們要知道乙個人可以修n輛車,那麼m個人就可以修n...

洛谷P3965 迴圈格 費用流

乙個完美的迴圈格是這樣定義的 對於任意乙個起始位置,你都可以沿著箭頭最終回到起始位置。如果乙個迴圈格不滿足完美,你可以隨意修改任意乙個元素的箭頭直到完美。例如下圖,左邊不是乙個完美的迴圈格,因為只有從 1,1 1,2 2,0 2,3 1,1 1,2 2,0 2,3 1,1 1,2 2 0 2,3 出...