LG1343 地震逃生
题意
汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边。1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完。
\(x<2^{31},n \leq 200,m \leq 2000\)
分析
都不用建模了,直接跑网络流就行了。
时间复杂度\(O(n^2 m)\)
代码
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<algorithm>
#include<string>
#define co const
template<class T>T read(T&x)
{
T data=0;
int w=1;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
w=-1;
ch=getchar();
}
while(isdigit(ch))
{
data=data*10+ch-'0';
ch=getchar();
}
return x=data*w;
}
using namespace std;
co int INF=0x3f3f3f3f;
co int MAXN=250,MAXM=2050;
int n,m;
struct edge
{
int nx,to,c;
}e[MAXM<<1];
int head[MAXN],ecnt;
void addedge(int x,int y,int c)
{
e[++ecnt].to=y,e[ecnt].c=c;
e[ecnt].nx=head[x],head[x]=ecnt;
}
queue<int>Q;
int dep[MAXN],cur[MAXN];
bool bfs(int s,int t)
{
copy(head+1,head+n+1,cur+1);
fill(dep+1,dep+n+1,INF);
dep[s]=0;
Q.push(s);
while(Q.size())
{
int x=Q.front();
Q.pop();
for(int i=head[x];i!=-1;i=e[i].nx)
{
int y=e[i].to,c=e[i].c;
if(c>0&&dep[y]>dep[x]+1)
{
dep[y]=dep[x]+1;
Q.push(y);
}
}
}
return dep[t]<INF;
}
int dfs(int x,int t,int lim)
{
if(x==t||!lim)
return lim;
int delta=0,inc;
for(int i=cur[x];i!=-1;i=e[i].nx)
{
cur[x]=i;
int y=e[i].to,c=e[i].c;
if(dep[y]==dep[x]+1&&(inc=dfs(y,t,min(lim,c))))
{
delta+=inc;
lim-=inc;
e[i].c-=inc;
e[i^1].c+=inc;
if(!lim) // edit 1
break;
}
}
return delta; // edit 2
}
int Dinic(int s,int t)
{
int res=0;
while(bfs(s,t))
res+=dfs(s,t,INF);
return res;
}
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
int tot;
read(n);read(m);read(tot);
fill(head+1,head+n+1,-1);
ecnt=-1;
for(int i=1;i<=m;++i)
{
int x,y,c;
read(x);read(y);read(c);
addedge(x,y,c);
addedge(y,x,0);
}
int ans=Dinic(1,n);
if(ans==0)
{
puts("Orz Ni Jinan Saint Cow!");
}
else
{
printf("%d %d\n",ans,tot/ans+bool(tot%ans));
}
return 0;
}
LG1343 地震逃生的更多相关文章
- 洛谷 P10P1343 地震逃生 改错
P1343 地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有\(n\)个点,\(m\)条边.1号点为教室,\ ...
- 洛谷 P1343 地震逃生
P1343地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每 ...
- 「洛谷P1343」地震逃生 解题报告
P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...
- P1343 地震逃生(最大流板题)
P1343 地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...
- P1343 地震逃生
题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量 ...
- 【u033】地震逃生
Time Limit: 1 second Memory Limit: 64 MB [问题描述] 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一 ...
- 【luogu P1343 地震逃生】 题解
题目链接:https://www.luogu.org/problemnew/show/P1343 菜 #include <queue> #include <cstdio> #i ...
- 【洛谷P1343】地震逃生
一道傻吊的网络流题,wori我写的读入优化怎么老T? 远离读入优化报平安? #include<bits/stdc++.h> #define N 4005 #define inf 10000 ...
- [Luogu1343]地震逃生 最大流
题目链接:https://www.luogu.org/problem/show?pid=1343 dinic跑最大流. #include<cstdio> #include<cstri ...
随机推荐
- centos 6 安装python2.7和pip
由于scrapy1.0的发布,想在Linux上测试,所以安装了centos6.6:但是它的python版本为2.6,很多东西都不支持,所以需要升级为2.7: 首先是在window7上安装虚拟机,然后安 ...
- Unity使用Win10语音
1. 引入头文件 using UnityEngine.Windows.Speech; 2. 设置识别词 public string[] keywords = new string[] { ...
- IdentityServer4在Asp.Net Core中的应用(二)
继续上次授权的内容,客户端模式后我们再说以下密码模式,先回顾下密码模式的流程: 我们还是使用上次的代码,在那基础上修改,在IdentityServer4里面有一个IdentityServer4.Tes ...
- 使用ASP.NET 的缓存机制的示例
if (HttpContext.Current.Cache["code_" + CodeType] == null) { SysCodeService codeService = ...
- 浅谈java中源码常见的几个关键字(native,strictfp,transient,volatile)
最近看源码总发现一些没见过的关键字,今天就来整理一下native,strictfp,transient,volatile native 本地 native是与C++联合开发的时候用的!java自己开发 ...
- [oracle原]访问局域网内出现“ORA-12541:TNS:无监听程序”
近日在服务器局域网内27电脑上安装了oracle11g,本机上访问此数据库正常.但在局域网内其它机器上访问27上的数据库时,出现“ORA-12541:TNS:无监听程序”错误. 查27上的配置:D:\ ...
- 什么情况下用resultType和 resultMap
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap 那什么情况下用resultType? resultMap 一般用在什么情况下? 如 ...
- Docker 生态
Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker 自从发布以来发生了很多的变化,并且有些 ...
- mac下csv乱码解决办法
到csv目录下, 用终端执行以下命令: iconv -f UTF8 -t GB18030 a.csv >b.csv
- SqlServer 转 Oracle 的几点注意
(转自:http://www.2cto.com/database/201208/146740.html) 1.字符型的字段相加需要用“||”,如果用“+”的话,会报“无效的数字”的错误. 2.类似 ...