洛谷P2604 ZJOI2010 網路擴容

2022-05-24 02:30:10 字數 747 閱讀 4898

題目大意:給定一張有向圖,每條邊都有乙個容量c和乙個擴容費用w。這裡擴容費用是指將容量擴大1所需的費用。

求: 1.在不擴容的情況下,1到n的最大流; 2.將1到n的最大流增加k所需的最小費用。

題解:先跑最大流,在殘餘網路上跑費用流

卡點:

c++ code:

#include#include#include#define maxn 5010 

using namespace std;

const int inf=0x3f3f3f3f;

int n,m,k;

int u[5010],v[5010],w[5010],c[5010];

int d[maxn],pre[maxn];

int q[maxn],h,t;

int st=1,ed;

int head[maxn],cnt=2;

struct edgee[5010<<2];

bool vis[maxn];

char ch;

void read(int &x)

inline int min(int a,int b)

}} }

return d[ed]!=inf;

}int update()

void mcmf()

int main()

P2604 ZJOI2010 網路擴容

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

洛谷P2602 ZJOI2010 數字計數 題解

很裸的一道數字dp的板子 定義f 當前列舉到的數字 當前數字之前的答案 列舉的數字 其它的套板子就可以了,要注意一下字首0的判斷 1 include2 include3 include4 include5 include6 include7 using namespace std 8 typedef...

洛谷 P2607 ZJOI2008 騎士

給出一幅有n個點,n條邊的無向未必聯通圖,每乙個點有乙個權並與另外乙個點相連,對其中一些點進行染色,且相鄰兩點的顏色不能都染,則最大的染色點權值和是多少.這題和 洛谷p1453城市環路 很像,區別就在於它不是連通圖.因而可以先用並查集和vector進行分塊,易證每一塊都是比樹多一條邊的連通圖,每一塊...