1. 程式人生 > >有上下界網路流問題

有上下界網路流問題

有上下界網路流

有上下界的網路流即是在普通的網路流的基礎上,額外新增每條邊流量的限制。

普通的網路流可以認為是特殊情況的上下界網路流,即流量限制為\(f_i\in [0,maxflow]\)

而現在,我們要求的每條邊的容量限制為\(f_i\in [B_i,C_i]\)

這類問題我們大致可以分成三類。

無源匯 上下界可行流

因為沒有源點和匯點,所以所有點都要滿足流量平衡。

如果我們能夠不考慮下界的話,就直接可以照搬最大流。

因為下界是一定要流滿的,所以我們先強制所有邊流滿下界,只考慮剩下的流量\(g_i\)

那麼,也就是對於每一個點\(x\),都要滿足流量平衡的方程:

\[\sum B_{(x,v)}+\sum g_{(x,v)}=\sum B_{(u,x)}+\sum g_{(u,x)}\]

如果能夠滿足這個方程的話,每條邊流量為\(B_i+g_i\)即是一組可行流。

考慮將流量分類,因為\(B\)是已知量,所以移項考慮左側\(B\)和右側\(g\)

假設左側\(M(x)=\sum B_{(u,x)}-\sum B_{(x,v)}\)

所以變成了需要滿足\(M(x)=\sum g_{(x,v)}-\sum g_{(u,x)}\)

因為不知道誰大誰小,所以按照\(M\)大小進行分類討論

如果\(M(x)\ge 0\),那麼有\(\sum g_{out}=\sum g_{in}+M\)

也就是流出需要比流入的流量要多\(M\),但是需要滿足流入等於流出。

所以建立一個超級源,連邊\((S,x)\)

,容量為\(M\),來補足流入少的\(M\)

反之,如果\(M(x)\lt 0\)

也就是流入多於流出,那麼需要額外流出\(M\)

同理建立超級匯,連邊\((x,T)\),容量為\(-M\),補足流出不足的\(M\)

現在已經可以滿足流量平衡了,在當前圖上跑最大流。

因為上面的所有\(M\)都是已知量,也就是如果可行流存在的話,

所有的流出源和流入匯的所有邊必須滿流,否則無法補足上述流量下界要求的東西。

所以這裡就可以解決無源匯可行流的問題。

有源匯 上下界可行流

依然是可行流問題,上面已經解決了無源匯的可行流問題,考慮能否將當前的有源匯轉化為無源匯。

顯然有源匯的的可行流中,除了源匯之外的所有點都滿足流量平衡。

而流出源的容量等於流入匯的流量,所以連邊匯到源,容量為\(inf\),這樣所有點都可以滿足流量平衡。

同時沒有了源匯,轉換為了無源匯上下界可行流問題。

有源匯 上下界最大流

由可行流變為了最大流問題。

首先明確一點,最大流一定是可行流,所以一定要先判斷是否存在可行流。

跑完可行流之後可能有一些邊還可以接著流,既然已經存在可行流了。

刪除超級源超級匯,以及\(T->S\)的邊,再在殘餘網路上解決最大流即可。

(超級源匯沒有必要刪去,因為不會答案產生影響)

那麼答案就是殘餘網路上的最大流加上可行流。

注意一下可行流是什麼東西,是\(T->S\)這條邊流過的流量。

不要和超級源超級匯之間的流量搞混了。

我寫的板子

有源匯 上下界最小流

最小流問題,在沒有上下界限制的時候是沒有意義的。(因為你可以所有邊都不動啊)

首先還是判斷可行流是否存在。

和上面一樣刪除掉超級源匯以及\(T->S\)的邊,繼續在殘餘網路上考慮。

其實只需要儘可能退流就好了,也就是求\(T->S\)的最大流,然後用可行流-最大流即可。

我寫的板子

Last

這套理論從這裡學的,這個博主好強啊orzorz

相關推薦

無匯源上下網路zoj 2314

設超級源點st,匯點ed; 對於一個點i; 設low[i]為其上界w為其下界,有flow=w-low[i]; if(flow>0)add(st,i,flow) if(flow<0)add(i,ed,-flow) 求st->ed最大流,看是不是滿流(

2314 Reactor Cooling(上下網路

題目: 給n個點和m個邊,每條邊有流量上界和下界,問能否使這n個點形成一個流量迴圈,每個點流入等於流出,每條邊都在界限之內。 分析: 典型的有上下界無源匯網路流。 法一: 建立源點 sss 和匯點 ttt , 對於圖中每條邊 &lt;u,v&gt

源匯上下網路的最小】HDU

Step1 Problem: 給你 n 個點,m 條流量下界是 low ,上界是 inf 的單向邊。+ 是源點,- 是匯點。 如果存在可行流,求源點到匯點的最小流。 資料範圍: 0 <= n <= 50, 1 <= m

源匯上下網路的最大】ZOJ

Step1 Problem 這是一個屌絲給女神拍照的故事。 有 n 天,m 個女神,第 i 個女神 n 天過後至少得有 Gi 張照片。 第 i 天: 屌絲給 C 個女神拍照,這天屌絲最多拍 D 張照片。 對於 id[j] 這個女神

上下網路問題

有上下界網路流 有上下界的網路流即是在普通的網路流的基礎上,額外新增每條邊流量的限制。 普通的網路流可以認為是特殊情況的上下界網路流,即流量限制為\(f_i\in [0,maxflow]\) 而現在,我們要求的每條邊的容量限制為\(f_i\in [B_i,C_i]\) 這類問題我們大致可以分成三類。 無源匯

上下網路建模方法

假設上界為 rrr, 下界為 lll 無源匯可行流(迴圈流) 法一: 建立源點 sss 和匯點 ttt , 對於圖中每條邊 &lt;u,v&gt;&lt;u, v&gt;<u,v> ,拆成如下三條: $<s,

【BZOJ2324】[ZJOI2011]營救皮卡丘 上下費用

add getch namespace div using blog 之前 std family 【BZOJ2324】[ZJOI2011]營救皮卡丘 Description 皮卡丘被火箭隊用邪惡的計謀搶走了!這三個壞家夥還給小智留下了赤果果的挑釁!為了皮卡丘,也為了

【bzoj2324】[ZJOI2011]營救皮卡丘 最短路-Floyd+上下費用

之前 %d push 間距 出發 防禦 using mil 之間 原文地址:http://www.cnblogs.com/GXZlegend/p/6832504.html 題目描述 皮卡丘被火箭隊用邪惡的計謀搶走了!這三個壞家夥還給小智留下了赤果果的挑釁!為了皮卡丘,也為

【bzoj1927】[Sdoi2010]星際競速 上下費用

.cn memset 相同 data 正整數 最大流 開放 使用 front 原文地址:http://www.cnblogs.com/GXZlegend/p/6832464.html 題目描述 10年一度的銀河系賽車大賽又要開始了。作為全銀河最盛大的活動之一,奪得這個項目

[loj#115] 無源匯上下可行 網絡

content display ios pac ans pri n) button 平衡 #115. 無源匯有上下界可行流 內存限制:256 MiB時間限制:1000 ms標準輸入輸出 題目類型:傳統評測方式:Special Judge 上傳者: 匿名 提交提

LOJ #115. 無源匯上下可行

add button for fread lose -c eight static end #115. 無源匯有上下界可行流 描述 這是一道模板題。 n n n 個點,m m m 條邊,每條邊 e e e 有一個流量下界 lower(e) \tex

(一道模板題) 無源匯上下可行

edi block html else printf ack 分類 tex long long 題目描述 這是一道模板題。 n 個點,m 條邊,每條邊 e 有一個流量下界 lower(e) 和流量上界 upper(e),求一種可行方案使得在所

源匯上下可行/最大

inf \n CA log nod ase style 刪除 IV 解析為轉載 :https://www.cnblogs.com/liu-runda/p/6262832.html 博主講的挺好的 有源匯有上下界可行流 模型:現在的網絡有一個源點s和匯點t,求出一個流使得

LOJ115 無源匯上下可行上下網絡

edge data har span amp work mes stream dde   假設初始流為每條邊的下界。但這樣可能流量會不守恒,我們需要在上面加上一個附加流使流量守恒。只要讓每個點開始的出/入流量與原初始流相等就可以求出附加流了。那麽新建超源S超匯T,令degr

[學習筆記] 上下網路學習筆記

帶下界的流建圖如下: 對於<u,v,down,up>,新建超級源點S’和超級匯點T’,連<S’,v,down>,<u,T’,down>,<u,v,up-down> 無源匯可行流: 直接判是否滿流即可。 有源匯最小流: 連<T,S,INF&

ZOJ 2314 Reactor Cooling(無源匯上下可行)

target fine node pac tmp nbsp 網絡流問題 設置 限制 題目鏈接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2314 題目大意: 給n個點,及m根pipe,每根p

無源匯上下網路

題目描述 這是一道模板題。 n n n 個點,m m m 條邊,每條邊 e e e 有一個流量下界 lower(e) \text{lower}(e) lower(e) 和流量上界 upper(e) \text{upper}(e) upper(e),求一種可行

關於上下網路

1.無源匯點上下界可行流 一個無源匯點網路流就相當於一個迴圈流,流量在這個迴圈中一直流動,它的最大流就是單位時間的最大流量. 那麼對於無源匯上下界網路流是否有可行解,也就是滿足每個邊的流量都至少是它的下界,並且保證所有點的"流量守恆"就是有解. 那麼我們就想辦法將有上下

LiberOJ ~ 116 ~ 源匯上下可行 (模板題)

//#include<bits/stdc++.h> #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #inc

上下網路

無源匯上下界可行流 構建虛擬源點SS,虛擬匯點TT 若i點原來 入>出,則SS向i連一條容量為其差值的邊 若i點原來 出>入,則i向TT連一條容量為其差值的邊 因為一條邊最