乍一看貌似和运输问题1没有任何区别,但本题有一个有意思的东西叫做下限,我个人称之为非强制下限,因为本题中要求的实际是我走这条边这条边才至少走下限的流,虽然出题人没说,但从样例来看确实是这样的,而强制下限目前还没做到,有待更新……

  其实这道题还是板子,唯一与1不同的是它对建边提出了其他要求。即将边拆成三部分将原来u->v的流量设为上限-下限,s->v,u->t,流量为下限,详见刘汝佳《算法奥赛入门经典训练指南》(俗称蓝书)。至于s->v,u->t,直接统计一下,最后一起结算便是。

 #include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cmath>
using namespace std;
int n,zz=,a[];
struct ro{
int to;
int next;
int l;
int from;
}road[];
void build(int x,int y,int z){
zz++;
road[zz].l=z;
road[zz].from=x;
road[zz].to=y;
road[zz].next=a[x];
a[x]=zz;
zz++;
road[zz].to=x;
road[zz].from=y;
road[zz].next=a[y];
a[y]=zz;
}
int ss,tt;
int pre[],flow[];
queue<int> q1;
int bfs(int s,int t){
memset(pre,-,sizeof(pre));
memset(flow,0x7f,sizeof(flow));
int tt=flow[];
pre[s]=;
q1.push(s);
while(!q1.empty())
{
int x=q1.front();q1.pop();
for(int i=a[x];i>;i=road[i].next)
{
int y=road[i].to;
if(pre[y]!=-||road[i].l<=)continue;
pre[y]=i;
flow[y]=min(flow[x],road[i].l);
q1.push(y);
}
}
if(flow[t]==tt)return -;
else return flow[t];
}
int sum;
int work(int s,int t){
int ans=;
while()
{
int x=bfs(s,t);
if(x==-)break;
ans+=x;
int now=pre[t];
while(now)
{
road[now].l-=x;
road[now^].l+=x;
now=pre[road[now].from];
}
}
return ans;
}
int s[];
int main(){
freopen("maxflowb.in","r",stdin);
freopen("maxflowb.out","w",stdout);
scanf("%d",&n);
tt=n+;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
int x,y;
scanf("%d%d",&x,&y);
if(!y) continue;
s[i]-=x;
s[j]+=x;
build(i,j,y-x);
}
}
build(n,,0x7fffffff);
for(int i=;i<=n;i++)
{
if(s[i]>)
{
build(ss,i,s[i]);
}
else if(s[i]<)
{
build(i,tt,-s[i]);
}
}
int an=work(ss,tt);
int anss=work(,n);
printf("%d\n",anss);
//while(1);
return ;
}

代码挺丑,请谅解。

cogs.12运输问题2题解的更多相关文章

  1. Cogs 12 运输问题2 (有上下界网络流)

    #include <cstdlib> #include <algorithm> #include <cstring> #include <iostream&g ...

  2. Cogs 12. 运输问题2(有上下界的有源汇最大流)

    运输问题2 ★★☆ 输入文件:maxflowb.in 输出文件:maxflowb.out 简单对比 时间限制:1 s 内存限制:128 MB 运输问题 [问题描述] 一个工厂每天生产若干商品,需运输到 ...

  3. 运输问题2(cogs 12)

    [问题描述]     一个工厂每天生产若干商品,需运输到销售部门进行销售.从产地到销地要经过某些城镇,有不同的路线可以行走,每条两城镇间的公路都有一定的流量限制.为了保证公路的运营效率,每条公路都有一 ...

  4. [COGS 0011] 运输问题1

    11. 运输问题1 ★★☆   输入文件:maxflowa.in   输出文件:maxflowa.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]     一个工厂每天生 ...

  5. COGS 08-备用交换机 题解——S.B.S.

    8. 备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直 ...

  6. Cogs 13. 运输问题4(费用流)

    运输问题4 ★★☆ 输入文件:maxflowd.in 输出文件:maxflowd.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 一个工厂每天生产若干商品,需运输到销售部门进 ...

  7. COGS 902 乐曲主题 题解 & hash入门贺

    [题意] 给定一个长为n的序列,元素都是不超过88的正整数,求序列中主题的最大长度. 所谓主题是指在序列中出现了至少两次并且不相交的子串.特别的,主题可以变调,也就是说如果一个子串全部加上或减去一个数 ...

  8. COGS 2434 暗之链锁 题解

    [题意] 给出一个有n个点的无向图,其中有n-1条主要边且这些主要边构成一棵树,此外还有m条其他边,求斩断原图的一条主要边和一条其他边使得图不连通的方案数. 注意,即使只斩断主要边就可以使得原图不连通 ...

  9. 喵哈哈村的魔法考试 Round #12 (Div.2) 题解

    A 注意答案会超过int,考虑分l,r奇数和偶数来考虑即可. #include<bits/stdc++.h> using namespace std; long long l,r; int ...

随机推荐

  1. Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法

    原文:Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法  [函数名称] 肤色检测函数SkinDetectProcess(WriteableBitmap src) [算法说明] ...

  2. C#获取字符串宽度像素

    通过Graphics对象的MeasureString方法可以获取字符串的大小,如下: Graphics graphics = CreateGraphics(); SizeF sizeF = graph ...

  3. DDD中的值对象如何用NHibernate进行映射

    原文:DDD中的值对象如何用NHibernate进行映射 <component/>是NHibernate中一个有趣的特性,即是用来映射DDD(Data-Display-Debuger)概念 ...

  4. 核心思想:许多公司都没有认识到云储存的革命性(类似QQ把它搞成了用户的家、再也离不开了)

    在云储存刚刚兴起的时候,也就是dropbox刚刚进入大家视野的时候.许多人都是简单的认为这只是一个提供在线存储的服务而已,许多公司都没有认识到云储存的革命性. 对于这些大公司贸然进入一些新的领域是需要 ...

  5. Tobject 类解析

    TObject = class    //创建    constructor Create;    //释放    procedure Free;    //初始化实列    class functi ...

  6. 每天进步一点--WCF学习笔记

    最近买了一本书WCF服务编程,重头再开始了解学习WCF,现将学习记录,以便后来复习,也希望和大家一起进步. WCF用终结点表示一种组成关系,终结点就是地址.契约与绑定的混合品,即 地址(Address ...

  7. 系统休眠消息PBT_APMSUSPEND

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa372721(v=vs.85).aspx https://msdn.microso ...

  8. Android开发环境搭建(原创)

    1,我的环境: win8 64位 2,软件安装: 1) jdk-7u40-windows-i586.exe 下载合适的版本,我下载的是 jdk7u40 32位 for windows 安装JDK,配置 ...

  9. Qt中由表中单元格的QModelIndex获取Global Pos的正确方法

    一直在尝试从单元格的行列索引(QModelIndex)获取其单元格的全局坐标(Global Pos)的方法,以期待在指定单元格附近弹出帮助信息.由View中的columnViewportPositio ...

  10. 给你的 GitHub Repository 加上 sponsor 按钮

    「本文微信公众号 AndroidTraveler 首发」 背景 其实之前 GitHub 就已经说过要给开源的开发者提供赞助支持. 当你进入 GitHub 主页时,你会在右边发现一个 Tips. 点击进 ...