【二分答案】【最大流】bzoj3130 [Sdoi2013]费用流
二分最大的边的cap,记作Lim。
把所有的边的cap设为min(Lim,cap[i])。
Bob一定会把单位费用加到最大边上。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
#define EPS 0.000001
#define N 101
#define INF 2147483647.0
#define M 1001
typedef double db;
int n,m,K,S,T;
int v[M<<1],next[M<<1],first[N],en;
db cap[M<<1];
void AddEdge(int U,int V,db Cap)
{
v[en]=V; cap[en]=Cap; next[en]=first[U]; first[U]=en++;
v[en]=U; cap[en]=0; next[en]=first[V]; first[V]=en++;
}
queue<int>q;
int d[N],cur[N];
bool bfs()
{
memset(d,-1,sizeof(int)*(n+1));
d[S]=0; q.push(S);
while(!q.empty())
{
int U=q.front(); q.pop();
for(int i=first[U];i!=-1;i=next[i])
if(d[v[i]]==-1&&cap[i]>EPS)
{
d[v[i]]=d[U]+1;
q.push(v[i]);
}
}
return d[T]!=-1;
}
db dfs(int U,db a)
{
if(U==T||a<=EPS) return a;
db Flow=0.0,f;
for(int &i=cur[U];i!=-1;i=next[i])
if(d[v[i]]==d[U]+1&&(f=(dfs(v[i],min(a,cap[i]))))>EPS)
{
cap[i]-=f;
cap[i^1]+=f;
Flow+=f;
a-=f;
if(a<=EPS)
break;
}
if(Flow<=EPS) d[U]=-1;
return Flow;
}
db MaxFlow()
{
db Flow=0.0,tmp;
while(bfs())
{
memcpy(cur,first,sizeof(int)*(n+1));
while((tmp=dfs(S,INF))>EPS) Flow+=tmp;
}
return Flow;
}
int xs[M],ys[M],zs[M];
int ChuShi;
bool check(db Lim)
{
memset(first,-1,sizeof(int)*(n+1));
en=0;
for(int i=1;i<=m;++i)
AddEdge(xs[i],ys[i],min((db)zs[i],Lim));
db t=MaxFlow();
return fabs(t-(db)ChuShi)<=EPS?1:0;
}
int main()
{
// freopen("bzoj3130.in","r",stdin);
db r=0.0,l=0.0;
scanf("%d%d%d",&n,&m,&K);
S=1; T=n;
memset(first,-1,sizeof(int)*(n+1));
for(int i=1;i<=m;++i)
{
scanf("%d%d%d",&xs[i],&ys[i],&zs[i]);
AddEdge(xs[i],ys[i],(db)zs[i]);
r=max(r,(db)zs[i]);
}
ChuShi=(int)MaxFlow();
while(r-l>EPS)
{
db mid=(l+r)/2.0;
if(check(mid)) r=mid-EPS;
else l=mid+EPS;
}
printf("%d\n%.4lf\n",ChuShi,l*(db)K);
return 0;
}
【二分答案】【最大流】bzoj3130 [Sdoi2013]费用流的更多相关文章
- BZOJ3130: [Sdoi2013]费用流[最大流 实数二分]
3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 960 Solved: 5 ...
- bzoj千题计划133:bzoj3130: [Sdoi2013]费用流
http://www.lydsy.com/JudgeOnline/problem.php?id=3130 第一问就是个最大流 第二问: Bob希望总费用尽量大,那肯定是把所有的花费加到流量最大的那一条 ...
- BZOJ3130 [Sdoi2013]费用流 【网络流 + 二分】
题目 Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络流方案必须满足:(1)每 ...
- BZOJ3130: [Sdoi2013]费用流(二分,最大流)
Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络 ...
- BZOJ3130 [Sdoi2013]费用流
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3130 这题codevs上也有,不过数据挂了[要A得看discuss]. 题目大意: Ali ...
- 【BZOJ3130】费用流(最大流,二分)
[BZOJ3130]费用流(最大流,二分) 题面 Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一 ...
- BZOJ 3130: [Sdoi2013]费用流 网络流+二分
3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1230 Solved: ...
- P3305 [SDOI2013]费用流
题目描述 Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量. 一个合法的网络流方案必须满足: ...
- luogu P3305 [SDOI2013]费用流
题目链接 bz似乎挂了... luogu P3305 [SDOI2013]费用流 题解 dalao告诉我,这题 似乎很水.... 懂了题目大意就可以随便切了 问1,最大流 问2,二分最大边权求,che ...
随机推荐
- POJ1459:Power Network(多源点多汇点的最大流)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 31086 Accepted: 15986 题 ...
- activity栈清空
http://blog.csdn.net/swjtuxu/article/details/26163737
- TCP ------ RST的产生
产生RST的几个原因 1.请求超时 有89.27两台主机.主机89向主机27发送了一个SYN,表示希望连接8888端口,主机27回应了主机89一个SYN表示可以连接.但是主机89莫名其妙的发送了一个R ...
- js实现页面触摸滑动
先设置一个div 高度不能设置100% . window.addEventListener("load",function(){ var addEventListener = ' ...
- Step-By-Step: Setting up Active Directory in Windows Server 2016
There are interesting new features now made available in Windows Server 2016 such as time based grou ...
- rsync安装使用详解
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.它的特性如下: 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原来文件的权限.时间.软硬 ...
- 使用Word2010发布博客文章
发布博客可以直接在web页面上面编辑,也可以使用客户端编辑,其中客户端支持windows live writer以及word本身的发布博客功能.个人试用后倾向于使用word发布博客文章. 下面的内容转 ...
- setInterval的使用和停用
var res = self.setInterval(function(){ if(typeof(UE.getEditor('editor').body.innerHTML) != "und ...
- RabbitMQ消息队列(三): 发布/订阅
1. 订阅/发布: 前面worker示例中的每个任务都是只发送给某一个worker,如果我们多个worker都需要接收处理同一个任务,此时就要使用 订阅/发布功能,比如,日志模块产生日志并发送到队列中 ...
- linux驱动基础系列--linux spi驱动框架分析(续)
前言 这篇文章是对linux驱动基础系列--linux spi驱动框架分析的补充,主要是添加了最新的linux内核里设备树相关内容. spi设备树相关信息 如之前的文章里所述,控制器的device和s ...