bzoj1834 ZJOI2010 網路擴容

2022-05-19 08:59:02 字數 855 閱讀 4987

最小費用最大流,這麼垃圾的題我想的居然掛了,正解就差一點點,我就假裝自己秒了這個題吧,思路就是先跑一邊最大流,然後在原圖的殘量網路中加一些邊,就是對於原本的每條邊\((x,y)\)連一條容量為inf,費用為\(cost_\)的邊,最後多建乙個超級源點,向原源點連一條容量為k,費用為0的邊就好了,sb題

#include#include#include#includeusing namespace std;

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

void read(int &x)

int ss,tt,tot,sum,n,m,k,id[200001],pre[200001],nxt[200001],h[100001],sla[100001],s,t,v[200001],dis[100001],w[200001],cnt=1,inf=1e9,ans,f[200001];bool vis[100001];

void add(int x,int y,int z,int u)

int dfs(int x,int flow)

int f=flow;vis[x]=1;

for(rg int i=h[x];i;i=nxt[i])

if(!vis[pre[i]]&&v[i])

else sla[pre[i]]=min(sla[pre[i]],dis[x]+w[i]-dis[pre[i]]);

} return flow-f;

}bool aug(int s,int t)

void zkw(int s,int t)

if(aug(s,t))break; }}

int main()

bzoj1834 網路擴容

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

bzoj1834(網路流 費用流)

給定一張有向圖,每條邊都有乙個容量c和乙個擴容費用w。這裡擴容費用是指將容量擴大1所需的費用。求 1 在不擴容的情況下,1到n的最大流 2 將1到n的最大流增加k所需的最小擴容費用。第一問裸的網路流 第二問 新建乙個匯點,將n號點與匯點相連,容量為k,限制最多增大的流量 費用為0 將原先每一條邊都新...

bzoj1834 網路擴容 網路流

好久沒寫題解了啊 給你一幅n個點的網路,先求出其1到n的最大流,每條弧還會有個屬性co sti cos ti 表示沒擴容乙個單位的費用,現在我們要求的就是擴容k個單位的最小費用 這是一道比較裸的網路流,第一問直接dinic就是了,重點就在於第二問。我們把第一問的殘量網路繼續利用,其中的每條弧的費用都...