zoj 3229 上下限網路流

2021-08-28 11:27:54 字數 1068 閱讀 4843

上下限網路流

做法:假設有邊x-y(a,b),建立臨時節點ss,tt,連線x-y(0,b-a),x-ss(0,a),tt-y(0,a);

最後連線t-s(0,inf);

先對tt-ss跑最大流,如果tt的每一條邊都是滿流,那麼就存在解,否則無解,

如果想求最大流,只需要在殘餘圖上跑s-t的最大流,因為ss點沒有出邊,並且任意點到ss的流量為0,所以可以保證在殘餘圖上跑最大流不會影響到tt-ss的流。所以可以得出答案,注意:如果用s點的出邊的反向邊求最大流,要注意要減去乙個inf,因為連線了一條t-s(0,inf)的邊。

也可以直接跑最大流、

#includeusing namespace std;

templatestruct maxflow g[501000];

void init()

void add_edge(int u,int v,t cap)

}if (flow==0) dis[u] = -1;

return flow;

}t dinic(int _s,int _t)

};maxflow<2000+7,int> mf;

int in[2000+7];//統計每個點到ss或者到tt的流量,這裡把多條邊合併

int su[100000];//每個點的最小流量,最後要加上

int day[500];

int main()

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

}for(int i = 1;i <= n;i ++) mf.add_edge(s,i,day[i]);

for(int i = 1;i <= m;i ++) mf.add_edge(n+i,t,inf);

mf.add_edge(t,s,inf);

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

int mxf = mf.dinic(tt,ss);

if(mxf == ret)

}else puts("-1");

puts("");

}return 0;

}

zoj 3229 有源匯上下界最大流

處理有源匯有上下界最大流問題是 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...

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

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

網路流之上下界網路流zoj zju 3229

先判斷有無可行流,再求最大流 在上一題上下界流中,我們已經知道了怎麼判斷無源匯上下界網路流有無可行流 把每一天看成乙個點,每個女孩也看成乙個點,增加源和匯s t,源向每一天連上 0,d 的邊,每一天與每個女孩如果有拍照任務的話連上 l,r 的邊,每個女孩與匯連上 g,oo 的邊,於是構成乙個有上下界...