P1343 地震逃生

题目描述

汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边。1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完。

输入输出格式

输入格式:

第一行3个整数n,m,x(\(x<2^{31},n \le 200,m \le 2000\));以下m行,每行三个整数a,b,c(a1,a<>b,0描述一条边,分别代表从a点到b点有一条边,且可容纳c名学生。

输出格式:

两个整数,分别表示每批最多能运出多少个学生,x名学生分几批才能运完。如果无法到达目的地(n号点)则输出“Orz Ni Jinan Saint Cow!”

输入输出样例

输入样例#1:

6 7 7
1 2 1
1 4 2
2 3 1
4 5 1
4 3 1
3 6 2
5 6 1

输出样例#1:

3 3

说明

【注释】

比如有图

1 2 1002 3 1

100个学生先冲到2号点,然后1个1个慢慢沿2-3边走过去

18神牛规定这样是不可以的……

也就是说,每批学生必须同时从起点出发,并且同时到达终点


算法

网络最大流。 请大家先掌握,这里不详细讲。

思路

很明显,1是源点,n是汇点,直接网络最大流模板即可。
这里数据十分小,用Edmonds-Karp或Dinic都可以。
我才不告诉你EK怎么打忘光了
用网络流求出了每次能通过的学生数ans后,就可以直接求出分成\(floor(frac{ans - 1}x) + 1\)次通过。总体来说不是很难,具体看代码QAQ

代码

#include<bits/stdc++.h>
using namespace std;
#define open(s) freopen( s".in", "r", stdin ), freopen( s".out", "w", stdout )
#define MAXN 205
#define MAXM 4005
//建双向边要开两倍别忘了int n, m, X, ans;//小写的x会冲突(下5行) QAQ 只好改大写
int hd[MAXN], nxt[MAXM], to[MAXM], val[MAXM], tot(1);//MAXN、MAXM别看错了 ~~我才不告诉你为了这个我错了好几遍~~
//还有tot要赋值为1**千万**别忘了 ~~我又为这个调试了好久~~(不用成对存储的请忽略这句话)
int dis[MAXN];
queue<int> Q;
int S, T;
int x, y;void Add( int x, int y, int z ){nxt[++tot] = hd[x]; hd[x] = tot; to[tot] = y; val[tot] = z;}//链式前向星万岁!~~虽然邻接矩阵也可以~~bool BFS(){//分层while( !Q.empty() ) Q.pop();//清空queue 懒得手打队列QAQmemset( dis, 0, sizeof dis );//初始化别忘了Q.push(S); dis[S] = 1;while( !Q.empty() ){x = Q.front(); Q.pop();for ( int i = hd[x]; i; i = nxt[i] ){if ( val[i] && !dis[to[i]] ){dis[to[i]] = dis[x] + 1;Q.push( to[i] );if ( to[i] == T ) return 1;}}}return 0;
}int DFS( int x, int fl ){if ( x == T ) return fl;int res(fl), k;for ( int i = hd[x]; i && res; i = nxt[i] ){if ( ( dis[to[i]] == dis[x] + 1 ) && val[i] ){k = DFS( to[i], min( res, val[i] ) );if ( !k ) dis[to[i]] = 0; //剪枝! 不能再增广的点去掉!val[i] -= k; val[i^1] += k; res -= k; //成对存储}}return fl - res;
}int main(){scanf( "%d%d%d", &n, &m, &X );S = 1; T = n;for ( int i = 1; i <= m; ++i ){int x, y, z; scanf( "%d%d%d", &x, &y, &z );Add( x, y, z ); Add( y, x, 0 );}int t;while( BFS() ) while( ( t = DFS( S, INT_MAX ) ) > 0 ) ans += t;if ( ans ) printf( "%d %d\n", ans, ( X - 1 ) / ans + 1 );//同上else printf( "Orz Ni Jinan Saint Cow!\n" ); //这是谁?return 0;
}

转载于:https://www.cnblogs.com/louhancheng/p/10118566.html

「洛谷P1343」地震逃生 解题报告相关推荐

  1. 「洛谷P3469」[POI2008]BLO-Blockade 解题报告

    P3469[POI2008]LO-Blockade 题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每两个 ...

  2. 【洛谷】P4147 玉蟾宫 解题报告

    [洛谷]P4147 玉蟾宫 解题报告 题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N* ...

  3. 「洛谷P2397」 yyy loves Maths VI (mode) 解题报告

    P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...

  4. 「洛谷2495」「BZOJ3052」「SDOI2001」消耗战【虚树+树形动态规划】

    题目大意 给你\(k\)个点,让这一些点和一号节点断开,删去某一些边,求最小的删去边权之和. 做题的心路历程 做了\(HG\)昨天的模拟赛,深深感觉到了窝的菜,所以为了\(A\)掉T1这一道毒瘤,窝就 ...

  5. 「洛谷 3768」简单的数学题

    传送门 problem 给定 nnn 和 ppp,求: ∑i=1n∑j=1nijgcd⁡(i,j)\sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j)i=1∑n​j=1∑n​ijgc ...

  6. 「洛谷 P5043」:树同构【树哈希】

    P5043 [模板]树同构([BJOI2015]树的同构 题目描述 树是一种很常见的数据结构. 我们把NNN个点,N−1N−1N−1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点 ...

  7. 洛谷 P3539 [POI2012]ROZ-Fibonacci Representation 解题报告

    P3539 [POI2012]ROZ-Fibonacci Representation 题意:给一个数,问最少可以用几个斐波那契数加加减减凑出来 多组数据10 数据范围1e17 第一次瞬间yy出做法, ...

  8. 洛谷 P4284 [SHOI2014]概率充电器 解题报告

    P4284 [SHOI2014]概率充电器 题目描述 著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完 ...

  9. 洛谷 [SDOI2015]约数个数和 解题报告

    [SDOI2015]约数个数和 题目描述 设\(d(x)\)为\(x\)的约数个数,给定\(N,M\),求$ \sum\limits^N_{i=1}\sum\limits^M_{j=1}d(ij)$ ...

最新文章

  1. 生物信息3天速成班—成为团队中不可或缺的人
  2. Java锁优化思路及JVM实现
  3. javaScript tips —— z-index 对事件机制的影响
  4. 普通程序员如何转向AI方向
  5. 小程序获取sessionkey_小程序,足不出户获取更多客源
  6. garmin USB: linux USB host驱动
  7. 海洋大数据关键技术及在灾害天气下船舶行为预测上的应用
  8. 代码规范 设计模式落地之路
  9. Struts2的简单介绍
  10. JavaSpring框架有哪些优势?
  11. 购买JSP空间上当的其他网友登载的地址
  12. 真空扫街机行业调研报告 - 市场现状分析与发展前景预测
  13. Keep悦动圈竞品分析报告(2)
  14. Linux磁盘管理和文件系统
  15. 浅谈NAT(网络地址转换)原理 + 个人的思考
  16. 2021高级消防设施操作员模拟真题集及答案解析
  17. 启信宝发布植树节产业洞察:超2000家绿色造纸企业,造纸业迭代落后产能
  18. Java毕业课设项目名称
  19. qt 下 原生socket tcp 基本用法
  20. (笔记)MLDN魔乐科技--五子棋

热门文章

  1. shell实例第2讲:获取随机字符串
  2. STM32F030控制蜂鸣器
  3. setsockopt()函数功能介绍
  4. 前端一HTML:十:选择器
  5. Netmeeting的四个端口
  6. netty4.0.x源码分析—bootstrap
  7. Linux指定网卡工作模式
  8. MongoDB文档对象字段属性合并的2种转换方法
  9. 如何解决开发人员的工作无法量化的问题
  10. PHP学习之八:执行运算符与字符加一