COGS 13. 运输问题4
★★☆ 输入文件:maxflowd.in
输出文件:maxflowd.out
简单对比
时间限制:1 s 内存限制:128 MB
第一行,一个整数n,表示共有n个城市(2<=n<=100),产地是1号城市,销地是n号城市
下面有n行,每行有2n个数字。第p行第2q−1,2q列的数字表示城镇p与城镇q之间有无公路连接。数字为0表示无,大于0表示有公路,且这两个数字分别表示该公路流量和每车费用。
第一行,1个整数n,表示最小费用为n。
1
6
0 0 1 3 5 10 0 0 0 0 0 0
0 0 0 0 0 0 5 7 0 0 0 0
0 0 0 0 0 0 0 0 2 8 0 0
0 0 0 0 1 3 0 0 0 0 3 5
0 0 2 4 0 0 0 0 0 0 2 6
0 0 0 0 0 0 0 0 0 0 0 0
- #include <cstdio>
- #include <queue>
- #define inf 0x7fffffff
- #define N 105
- using namespace std;
- bool vis[N];
- int n,s,t,fa[N],dis[N],flow[N],cnt=,head[N];
- struct Edge
- {
- int next,to,flow,cost;
- Edge (int next=,int to=,int flow=,int cost=) : next(next),to(to),flow(flow),cost(cost) {}
- }edge[N*N];
- inline void ins(int u,int v,int w,int l)
- {
- edge[++cnt]=Edge(head[u],v,w,l);
- head[u]=cnt;
- }
- bool spfa(int s,int t)
- {
- for(int i=s;i<=t;++i) vis[i]=,flow[i]=inf,dis[i]=inf;
- dis[s]=;
- fa[s]=;
- queue<int>q;
- q.push(s);
- for(int now;!q.empty();)
- {
- now=q.front();
- q.pop();
- vis[now]=;
- for(int i=head[now];i;i=edge[i].next)
- {
- int v=edge[i].to;
- if(dis[v]>dis[now]+edge[i].cost&&edge[i].flow)
- {
- dis[v]=dis[now]+edge[i].cost;
- flow[v]=min(flow[now],edge[i].flow);
- fa[v]=i;
- if(!vis[v])
- {
- q.push(v);
- vis[v]=;
- }
- }
- }
- }
- return dis[t]!=inf;
- }
- int dinic(int s,int t)
- {
- int ans=;
- for(;spfa(s,t);)
- {
- int x=flow[t];
- for(int i=t;i!=s&&i;i=edge[fa[i]^].to)
- {
- edge[fa[i]].flow-=x;
- edge[fa[i]^].flow+=x;
- }
- ans+=dis[t]*x;
- }
- return ans;
- }
- int main()
- {
- freopen("maxflowd.in","r",stdin);freopen("maxflowd.out","w",stdout);
- scanf("%d%d%d",&n,&s,&t);
- for(int i=;i<=n;++i)
- for(int a,b,j=;j<=n;++j)
- {
- scanf("%d%d",&a,&b);
- if(a&&b)
- {
- ins(i,j,a,b);
- ins(j,i,,-b);
- }
- }
- printf("%d\n",dinic(s,t));
- return ;
- }
COGS 13. 运输问题4的更多相关文章
- Cogs 13. 运输问题4(费用流)
运输问题4 ★★☆ 输入文件:maxflowd.in 输出文件:maxflowd.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 一个工厂每天生产若干商品,需运输到销售部门进 ...
- Cogs 12 运输问题2 (有上下界网络流)
#include <cstdlib> #include <algorithm> #include <cstring> #include <iostream&g ...
- [COGS 0011] 运输问题1
11. 运输问题1 ★★☆ 输入文件:maxflowa.in 输出文件:maxflowa.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 一个工厂每天生 ...
- cogs.12运输问题2题解
乍一看貌似和运输问题1没有任何区别,但本题有一个有意思的东西叫做下限,我个人称之为非强制下限,因为本题中要求的实际是我走这条边这条边才至少走下限的流,虽然出题人没说,但从样例来看确实是这样的,而强制下 ...
- Cogs 12. 运输问题2(有上下界的有源汇最大流)
运输问题2 ★★☆ 输入文件:maxflowb.in 输出文件:maxflowb.out 简单对比 时间限制:1 s 内存限制:128 MB 运输问题 [问题描述] 一个工厂每天生产若干商品,需运输到 ...
- COGS 11. 运输问题1
★★☆ 输入文件:maxflowa.in 输出文件:maxflowa.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 一个工厂每天生产若干商品,需运输到 ...
- 【费用流】【网络流24题】【cogs 739】运输问题
739. [网络流24题] 运输问题 ★★ 输入文件:tran.in 输出文件:tran.out 简单对照 时间限制:1 s 内存限制:128 MB «问题描写叙述: «编程任务: 对于给定的m 个仓 ...
- [网络流24题] COGS 运输问题1
11. 运输问题1 ★★☆ 输入文件:maxflowa.in 输出文件:maxflowa.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 一个工厂每天生 ...
- Cogs 739. [网络流24题] 运输问题(费用流)
[网络流24题] 运输问题 ★★ 输入文件:tran.in 输出文件:tran.out 简单对比 时间限制:1 s 内存限制:128 MB «问题描述: «编程任务: 对于给定的m 个仓库和n 个零售 ...
随机推荐
- ACM-ICPC2018徐州网络赛 BE, GE or NE(对抗搜索+博弈+记忆化)
BE, GE or NE 23.58% 1000ms 262144K In a world where ordinary people cannot reach, a boy named &quo ...
- Shader 模板缓冲和模板测试
http://blog.sina.com.cn/s/blog_6e159df70102xa67.html 模板缓冲的概念 Unity官方的Shader文档根本没有提到这个玩意,这个概念也是看到了UGU ...
- Spring+SpringMVC+JDBC实现登录
Spring+SpringMVC+JDBC实现登录 有一位程序员去相亲的时候,非常礼貌得说自己是一名程序员,并解释自己是做底层架构的,于是女方听到"底层"两个字,就一脸嫌弃:什么时 ...
- 本机和虚拟机互联 设置静态IP vmware 虚拟网络 桥接 NAT 仅主机 自定义
- JavaScript进阶 - 第8章 浏览器对象
第8章 浏览器对象 8-1 window对象 window对象是BOM的核心,window对象指当前的浏览器窗口. window对象方法:
- Vue中登录模块
- JXl常用解析详解
目的: java解析 excel 无非就是apache poi 或者 jxl 两者在使用上其实都差不多,关键还是看你自己熟悉那个,用那个!我也是初次接触jxl 看很多博客说 jxl只适用于处理小数据量 ...
- C# Obsolete(已弃用方法属性)
class Realization : Interface { /// <summary> /// 已弃用的方法,Obsolete第二个参数设置为true,调用此方法会产生警告并引起编译器 ...
- 详解javascript中的this对象
详解javascript中的this对象 前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的 ...
- [LOJ 2070] 「SDOI2016」平凡的骰子
[LOJ 2070] 「SDOI2016」平凡的骰子 [题目链接] 链接 [题解] 原题求的是球面面积 可以理解为首先求多面体重心,然后算球面多边形的面积 求重心需要将多面体进行四面体剖分,从而计算出 ...