ZJOI2010 網路擴容

2021-09-30 18:46:31 字數 1762 閱讀 7683

最大流+費用流

洛谷位址

第一問就直接跑最大流。

第二問目前有兩種方法:

#include

#include

#include

#include

using

namespace std;

#define inf 0x7fffffff

int n,m,k,s,t;

struct edgee[

100005];

int first[

50005

],cur[

50005

],cnt=1;

inline

void

add(

int u,

int v,

int c,

int w)

//最大流

int dep[

50005];

intbfs()

}return0;

}int

dfs(

int x,

int f)}if

(!used)dep[x]=-

1;return used;

}int

dinic()

return flow;

}//費用流

int money=

0,vis[

50005

],dis[

50005];

intspfa()

}}}//for(int i=1;i<=n;i++)cout/cout

<

0x3f3f3f3f

;//真1假0

}int

dfs2

(int x,

int f)

int used=

0,k;vis[x]=1

;for

(int i=first[x]

;i;i=e[i]

.nxt)

//if

(used==f)

break;}

}return used;

}int

zkw()}

return flow;

}int h[

100005];

intmain()

s=1;t=n;

printf

("%d "

,dinic()

);int g=cnt;

for(

int i=

2;i<=g;i++)if

(i%2==0

)add

(e[i]

.u,e[i]

.v,inf,h[i]);

else

add(e[i]

.u,e[i]

.v,0

,h[i]);

s=++n;

add(s,

1,k,0)

;add(1

,s,0,0

);zkw();

printf

("%d"

,money)

;return0;

}

ZJOI2010 網路擴容

題目描述 給定一張有向圖,每條邊都有乙個容量c和乙個擴容費用w。這裡擴容費用是指將容量擴大1所需的費用。求 1 在不擴容的情況下,1到n的最大流 2 將1到n的最大流增加k所需的最小擴容費用。輸入格式 輸入檔案的第一行包含三個整數n,m,k,表示有向圖的點數 邊數以及所需要增加的流量。接下來的m行每...

zjoi2010 網路擴容

描述 description 給定一張有向圖,每條邊都有乙個容量c和乙個擴容費用w。這裡擴容費用是指將容量擴大1所需的費用。求 1 在不擴容的情況下,1到n的最大流 2 將1到n的最大流增加k所需的最小擴容費用。輸入格式 input format 輸入檔案的第一行包含三個整數n,m,k,表示有向圖的...

ZJOI2010 網路擴容 費用流

給定一張有向圖,每條邊都有乙個容量 c 和乙個擴容費用 w 這裡擴容費用是指將容量擴大 1 所需的費用。求 在不擴容的情況下,1 到 n 的最大流 將 1 到 n 的最大流增加 k 所需的最小擴容費用。先求出原圖的最大流,大小設為 f 對於原圖中的每條邊 u,v,w 我們連邊 u,v,w,0 和 u...