loj116
給出乙個有源匯點的有向圖。每條邊有最大流量和最小流量。現在需要求出從源點到匯點的最大流可以是多少。上下界可行流
先回顧有源匯上下界可行流乾了些什麼。
其實可行流就是找到了一種滿足流量下界的方案。
在滿足了流量下界之後,可以發現還有一些殘餘的自由流量(可選可不選)
於是我們在之前的殘餘網路上再跑一邊\(dinic\)。這次不算超級源匯點,也不算從\(t\)到\(s\)添的那條邊。
這樣將在可行流種算出來的流量加上後來跑出來的流量就是答案了。
/*
* @author: wxyww
* @date: 2019-02-10 15:13:47
* @last modified time: 2019-02-10 16:31:08
*/#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int inf = 1e9,n = 100000;
ll read()
while(c>='0'&&c<='9')
return x*f;
}struct node e[n];
int head[n],ejs = 1;
void add(int u,int v,int w)
int dep[n];
queueq;
int s,t;
int low[n],rd[n],cd[n],ans,cur[n];
int bfs()
} }return 0;
}int dfs(int u,int now)
} return ret;
}int dinic()
return ans;
}int main()
for(int i = 1;i <= n;++i)
if(ans != dinic())
for(int i = head[s];i;i = e[i].nxt)
e[i].w = e[i ^ 1].w = 0;
for(int i = head[t];i;i = e[i].nxt) e[i].w = e[i ^ 1].w = 0;
ans = e[3].w;
e[3].w = e[2].w = 0;
s = ss;t = tt;
ans += dinic();
cout
給出乙個有源匯點的有向圖。每條邊有最大流量和最小流量。現在需要求出在從源點到匯點的最小流可以是多少。
和上面的最大流類似。
我們先跑一邊可行流。然後就滿足下界了。然後我們不想要那麼多流量,也就是說我們想要退流。
怎麼退流呢。考慮反向邊,反向邊中加上的流量其實是正邊中減去的流量。所以從t到s跑一遍最大流。然後用之前可行流中的流量減去即可。
**與上面極度類似,只要改標註的兩個地方就行了。
/** @author: wxyww
* @date: 2019-02-10 15:13:47
* @last modified time: 2019-02-10 16:47:20
*/#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int inf = 1e9,n = 1000000;
ll read()
while(c>='0'&&c<='9')
return x*f;
}struct node e[n];
int head[n],ejs = 1;
void add(int u,int v,int w)
int dep[n];
queueq;
int s,t;
int low[n],rd[n],cd[n],ans,cur[n];
int bfs()
} }return 0;
}int dfs(int u,int now)
} return ret;
}int dinic()
return ans;
}int main()
for(int i = 1;i <= n;++i)
if(ans != dinic())
for(int i = head[s];i;i = e[i].nxt)
e[i].w = e[i ^ 1].w = 0;
for(int i = head[t];i;i = e[i].nxt) e[i].w = e[i ^ 1].w = 0;
ans = e[3].w;
e[3].w = e[2].w = 0;
s = tt;t = ss;//!!!
ans -= dinic();//!!!
cout
}
有源匯上下界最小流 模板
這只是 其中一種 做法 這只是其中一種做法 這只是其中一 種做法 我暫時還沒有理解,只是先放個模板而已 首 先還 是根據下 界來建圖 原圖源 點s,匯 點t 首先還是根據下界來建圖,原圖源點s,匯點t 首先還是根據 下界來建 圖,原圖 源點s,匯點t 然 後因 為流量守 恆,新建 超級源s 1和超級...
117 有源匯有上下界最小流
題目描述 n nn 個點,m mm 條邊,每條邊 e ee 有乙個流量下界 lower e text e lower e 和流量上界 upper e text e upper e 給定源點 s ss 與匯點 t tt,求源點到匯點的最小流。輸入格式 第一行兩個正整數 n nn m mm s ss t...
有源匯有上下界最大 最小流
建圖還是要想一想的.寫一下吧 首先根據有源匯可行流建圖,正向附加邊滿流證明有可行流 然後在這個殘量網路上刪掉 t,s,oo 這條邊,跑 s t 最大流就是最大流,t s 最大流就是最小流 include define int long long define ll long long define ...