zoj 3229 有源匯上下界最大流

2021-06-26 02:06:53 字數 1923 閱讀 8132

處理有源匯有上下界最大流問題是:

1.構造附加網路

2.對ss、tt求最大流(ss、tt滿流則有解)

3.若有解,對s、t求最大流

而有源匯有上下界最小流問題則是:

1.構造附加網路(不新增[t,s]邊)

2.對ss、tt求最大流

3.新增[t,s]邊

4.對ss、tt求最大流

5.若ss、tt滿流,則[t,s]的流量就是最小流

題意:乙個屌絲給m個女神拍照,計畫拍照n天,每一天屌絲給給定的c個女神拍照,每天拍照數不能超過d張,而且給每個女神i拍照有數量限制[li,ri],對於每個女神n天的拍照總和不能少於gi,如果有解求屌絲最多能拍多少張照,並求每天給對應女神拍多少張照;否則輸出-1。

分析:增設一源點st,匯點sd,st到第i天連一條上界為di下界為0的邊,每個女神到匯點連一條下界為gi上界為oo的邊,對於每一天,當天到第i個女孩連一條[li,ri]的邊。

建圖模型:

源點s,終點d。超級源點ss,超級終點dd。首先判斷是否存在滿足所有邊上下界的可行流,方法可以轉化成無源匯有上下界的可行流問題(t->s無窮)。然後再以s,t跑一下最大流。

#include#include#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

#define inf 0x3f3f3f3f

int dir[4][2]=;

int n,m;

int gnum[400];

int c[1500];

int gb[400][105];

int lo[400][105];

const int maxnode = 1500 + 5;

const int maxedge = 2*50000 + 5;

const int oo = 0x3f3f3f3f;

int node, src, dest, nedge;

int head[maxnode], point[maxedge], next1[maxedge], flow[maxedge], capa[maxedge];//point[x]==y表示第x條邊連線y,head,next為鄰接表,flow[x]表示x邊的動態值,capa[x]表示x邊的初始值

int dist[maxnode], q[maxnode], work[maxnode];//dist[i]表示i點的等級

void init(int _node, int _src, int _dest)

void addedge(int u, int v, int c1, int c2)

bool dinic_bfs()

return dist[dest] >= 0;

}int dinic_dfs(int x, int exp)

}return 0;

}int dinic_flow()

}return result;

}//建圖前,執行一遍init();

//加邊時,執行addedge(a,b,c,0),表示點a到b流量為c的邊建成(注意點序號要從0開始)

//求解最大流執行dinic_flow(),返回值即為答案

int main()

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

}addedge(n+m+1,0,oo,0);

int sum=0,tf,ans;

for(i=0;i<=n+m+1;i++)

else

addedge(i,n+m+3,-c[i],0);

} tf=dinic_flow();

if(tf==sum)

}printf("\n");

} else

}return 0;

}

zoj 3229 有源匯有上下界的最大流模板題

坑啊,pe的程式在zoj上原來是wa。題目大意 乙個屌絲給m個女神拍照。計畫拍照n天,每一天屌絲最多個c個女神拍照,每天拍照數不能超過d張,並且給每乙個女神i拍照有數量限制 li,ri 對於每乙個女神n天的拍照總和不能超過gi,假設有解求屌絲最多能拍多少張照,並求每天給相應女神拍多少張照 否則輸出 ...

有源匯上下界最大流

a 有源匯有上下界最大流 libreoj 116 給定乙個包含 n 個點 m 條邊的有向圖,每條邊都有乙個流量下界和流量上界。給定源點 s和匯點 t,求源點到匯點的最大流。輸入格式 第一行包含四個整數 n,m,s,t。接下來 m行,每行包含四個整數 a,b,c,d 表示點 a 和 b 之間存在一條有...

有源匯上下界最大流

題目描述 這是一道模板題。n n n 個點,m m m 條邊,每條邊 e e e 有乙個流量下界 lower e text e lower e 和流量上界 upper e text e upper e 給定源點 s s s 與匯點 t t t,求源點到匯點的最大流。輸入格式 第一行兩個正整數 n n...