题目

Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑、仰卧起坐等 等,不过到目前为止,他
坚持下来的只有晨跑。 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街道,Elaxia只能从 一
个十字路口跑向另外一个十字路口,街道之间只在十字路口处相交。Elaxia每天从寝室出发 跑到学校,保证寝室
编号为1,学校编号为N。 Elaxia的晨跑计划是按周期(包含若干天)进行的,由于他不喜欢走重复的路线,所以
在一个周期内,每天的晨跑路线都不会相交(在十字路口处),寝室和学校不算十字路 口。Elaxia耐力不太好,
他希望在一个周期内跑的路程尽量短,但是又希望训练周期包含的天 数尽量长。 除了练空手道,Elaxia其他时间
都花在了学习和找MM上面,所有他想请你帮忙为他设计 一套满足他要求的晨跑计划。

输入格式

第一行:两个数N,M。表示十字路口数和街道数。
接下来M行,每行3个数a,b,c,表示路口a和路口b之间有条长度为c的街道(单向)。
N ≤ 200,M ≤ 20000。

输出格式

两个数,第一个数为最长周期的天数,第二个数为满足最长天数的条件下最短的路程长 度。

输入样例

7 10

1 2 1

1 3 1

2 4 1

3 4 1

4 5 1

4 6 1

2 5 5

3 6 6

5 7 1

6 7 1

输出样例

2 11

题解

拆点费用流
流量就是所求周期
费用即为路程长

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#define LL long long int
#define REP(i,n) for (int i = 1; i <= (n); i++)
#define Redge(u) for (int k = h[u]; k != -1; k = ed[k].nxt)
using namespace std;
const int maxn = 505,maxm = 100005,INF = 0x7fffffff;
inline int RD(){int out = 0,flag = 1; char c = getchar();while (c < 48 || c > 57) {if (c == '-') flag = -1; c = getchar();}while (c >= 48 && c <= 57) {out = (out << 1) + (out << 3) + c - '0'; c = getchar();}return out * flag;
}
int N,M,h[maxn],ne = 0,S,T;
struct EDGE{int from,to,nxt,f; LL w;}ed[maxm];
inline void build(int u,int v,int f,LL w){ed[ne] = (EDGE){u,v,h[u],f,w}; h[u] = ne++;ed[ne] = (EDGE){v,u,h[v],0,-w}; h[v] = ne++;
}
int p[maxn],inq[maxn],minf[maxn];
LL d[maxn],flow = 0,cost = 0;
void maxcost(){queue<int> q; int u,to;while (true){for (int i = 0; i <= T; i++) d[i] = INF;minf[S] = INF; d[S] = 0; inq[S] = true; q.push(S);while (!q.empty()){u = q.front(); q.pop();inq[u] = false;Redge(u) if (ed[k].f && d[to = ed[k].to] > d[u] + ed[k].w){d[to] = d[u] + ed[k].w; p[to] = k; minf[to] = min(ed[k].f,minf[u]);if (!inq[to]) q.push(to),inq[to] = true;}}if (d[T] == INF) break;flow += minf[T]; cost += (LL)minf[T] * d[T];u = T;while (u != S){ed[p[u]].f -= minf[T]; ed[p[u] ^ 1].f += minf[T];u = ed[p[u]].from;}}
}
int main(){memset(h,-1,sizeof(h));N = RD(); M = RD(); S = 1; T = 2 * N; LL a,b,w;for (int i = 2; i < N; i++) build(i,i + N,1,0);build(1,1 + N,INF,0); build(N,N + N,INF,0);while (M--){a = RD(); b = RD(); w = RD();build(a + N,b,1,w);}maxcost();printf("%lld %lld",flow,cost);return 0;
}

转载于:https://www.cnblogs.com/Mychael/p/8282733.html

BZOJ1877 [SDOI2009]晨跑 【费用流】相关推荐

  1. bzoj1877 [SDOI2009]晨跑 费用流

    注意这个题要求每个点也只经过一次,所以直接复制点就行了 其他的都和普通费用流一样了 码: #include<iostream> #include<cstdio> #includ ...

  2. P2153 晨跑,费用流裸题

    晨跑 题目连接 https://www.luogu.org/problemnew/show/P2153 题解 求最大不相交路径数,并在路径数最大前提下,求总路程最短. 太裸了. 求不相交路径数:将除1 ...

  3. 【BZOJ 1877】 [SDOI2009]晨跑(费用流)

    题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...

  4. BZOJ1877:[SDOI2009]晨跑——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1877 https://www.luogu.org/problemnew/show/P2153 Ela ...

  5. 洛谷 [SDOI2009]晨跑

    题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...

  6. bzoj 1877: [SDOI2009]晨跑 (网络流)

    明显拆点费用流: typearr=recordtoward,next,cap,cost:longint;end;constmm=1<<30;maxn=1000;maxm=300000;va ...

  7. [SDOI2009]晨跑

    题目链接 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 inline ll rea ...

  8. BZOJ 1061费用流

    思路: 我们可以列出几个不等式 用y0带进去变成等式 下-上 可以消好多东西 我们发现 等式左边的加起来=0 可以把每个方程看成一个点 正->负 连边 跑费用流即可 //By SiriusRen ...

  9. POJ 2135 简单费用流

    题意:       题意是一个人他要从牧场1走到牧场n然后在走回来,每条路径只走一次,问全程的最短路径是多少. 思路:        这个题目挺简单的吧,首先要保证每条边只能走一次,然后还要要求费用最 ...

  10. hdu4067 费用流(混合欧拉的宽展和延伸)

    题意:        给以一个图,每个有向边都有两个权值,a,b其中a是保留这条边的花费,b是删除这条边的花费,让你删去一些边使图满足一下要求: (1)只有一个起点和一个终点 (2)所有的边都是又向的 ...

最新文章

  1. GoldenGate 配置extract,replicat进程自启动
  2. 使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
  3. 【数字图像】数字图像处理博客汇总
  4. 语音通话框架_普通话考试得高分的方法
  5. 《Head First设计模式》第八章笔记-模板方法模式
  6. 《Python Cookbook 3rd》笔记(4.7):迭代器切片
  7. 建立数组并写入数据_VBA学习笔记19:数组1
  8. paip.svn使用最佳实践
  9. php在html中if,html里的if注释怎么使用
  10. STM32F207使用定时器1产生PWM波形
  11. 3ds Max 2016的安装和破解
  12. iphone导出视频 无法连接到设备_爱思助手无法识别设备或者连接超时解决办法...
  13. 北京林业大学计算机考研录取分数线,2017北京林业大学各专业考研复试分数线...
  14. Javascript 前端生成Word文档
  15. Bugku Misc 图穷匕见
  16. 春天又来了,做好自己的一年之计
  17. 传统与深度学习遥感变化监测遥感技术路线与方法
  18. 数据库的“读写分离”
  19. 静态代码分析工具清单:开源篇
  20. python groupby apply_python – 使用自己的函数优化groupby.apply

热门文章

  1. python selenium qwebengineview获取页面元素_selenium操作详解之获取元素状态
  2. python从入门到实践第二版_【Python入门教程】第二季网络爬虫基础
  3. CS224N笔记——词向量表示
  4. android 下载网络图片并缓存
  5. 专访普渡科技:深耕餐饮业务,充分发掘送餐机器人的商业价值
  6. 购物搜索引擎架构的变与不变
  7. ASP.NET MVC中的控制器激活与反射之间的联系(帮助理解)
  8. 站在巨人的肩膀上学习Android开发
  9. bootstrap 快速入门
  10. [沫沫金原创]Sql中跨库访问和同库跨用户访问区别