hdu 4067 最小費用最大流)

2021-09-06 11:49:30 字數 2105 閱讀 2746

如果人為新增t->s的邊,那麼圖中所有頂點要滿足的條件都是一樣的了,我們以此為目的來建圖。

對於每條邊,我們只有兩種操作,要麼保留要麼刪除,那麼先假設兩種操作都能滿足條件,我們就可以選擇花費小的操作來執行,最後再根據實際情況調整。

首先不加入任何邊,在新增或刪除(不加入)邊的過程中,對每個頂點v記錄in[v]為其當前入度,out[v]為其出度,sum為當前的總花費。

那麼對於每條邊,如果a<=b,那麼保留這條邊,in[v]++,out[u]++,sum+=a,然後連邊v->u,流量1,費用為b-a(如果刪除這條邊的費用)

如果bv,流量1,費用為a-b(如果保留這條邊的費用)。

然後我們人為的加入一條t->s,直接in[s]++,out[t]++,使得圖中所有點處於相同的狀況。

設立超級源匯s、t,對於原圖的每個點i,如果in[i]>out[i],則連邊s->i,流量為in[i]-out[i], 費用為0,否則連邊i->t,流量為out[i]-in[i],費用為0。至此,建圖完成。

現在求s到t的費用流mincost,然後檢查從s發出的邊,如果全部滿流則有解,答案就是sum+mincost,否則無解。

這樣建圖的意義:例如對點i,in[i]>out[i],說明當前該點入度大於出度,那麼我們把之前刪除的以i為起點的邊新增回來 或者把之前保留的以i為終點的邊刪除,現在邊的費用其實是改變邊狀態所需要額外付的費用,而最小費用流所求的就是全部調整的總費用了,於是答案就是sum(初始操作的費用)+mincost(額外付出的費用)。

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7#define maxn 222

8#define maxm 2222222

9#define inf 1<<30

1011

struct

edgeedge[maxm];

1415

intn,m,vs,vt,ne;

16int

head[maxn];

1718

void insert(int u,int v,int cap,int

cost)

1932

33int

dist[maxn],pre[maxn],cur[maxn];

34bool

mark[maxn];

35bool spfa(int vs,int

vt)3656}

57}58}

59return dist[vt]

6162

int mincostflow(int vs,int

vt)63

70 flow+=aug;cost+=dist[vt]*aug;

71for(int u=vt;u!=vs;u=pre[u])75}

76return

cost;77}

7879

intin[maxn],out[maxn];

80bool

judge()

8186

return

true;87

}8889int

main()

90else

110}

111 in[s]++;

112 out[t]++;

113 vs=0,vt=n+1

;114

for(int i=1;i<=n;i++)

118 cost=mincostflow(vs,vt);

119 printf("

case %d:

",t++);

120if

(judge())else

123 puts("

impossible");

124}

125return0;

126}

127128

129130

131132

133134

135136

137138

view code

最小費用最大流

網 絡流的基本問題為 設乙個有向賦權圖g v,e v 其中有兩個特殊的節點s和s s稱為發點,s 稱為收點。圖中各 邊的方向和權數表示允許的流向和最大可能的流量 容量 問在這個網路圖中從發點流出到收點匯集,最大可通過的實際流量為多少?流向的分布情況為怎樣?設有乙個網路圖g v,e v e中的每條邊 ...

最小費用最大流

const int maxn 250 const int maxm 62272 const int inf 0x4ffffff int n,m struct edge edge maxm int head maxn cnt void init void addedge int u,int v,int...

最小費用最大流

看了最小費用最大流的問題,感覺好難啊,想不到,關鍵就是想不到,知道模板什麼用,只是能a題僅此而已,要想學深真的不是件容易的事情啊。為此我總結了以下幾點供複習知識點或者是講課時用 網路流的費用 在實際應用中,與網路流有關的問題,不僅涉及流量,而且還有費用的因素。網路的每一條邊 v,w 除了給定容量ca...