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 ...
随机推荐
- 性能测试TPS目标值确定-二八原则
在性能测试中通常使用二八原则来量化业务需求. 二八原则:指80%的业务量在20%的时间里完成. TPS(QPS)=并发数/响应时间 例:如某个公司1000个员工,在周五下午3点-5点有90%的员工登陆 ...
- dva-loading使用方法
1. 下载dva-loading npm install dva-loading --save 2. 导入并使用dva-loading import createLoading from 'dva-l ...
- IOS UI-键盘处理和UIToolbar
// // ViewController.m // IOS_0225-键盘处理和UIToolBar // // Created by ma c on 16/2/25. // Copyright © 2 ...
- 嵌套类,PIMPL
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- Git远程操作详解(新手必备)
Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...
- C++内存分配与对象构造的分离
在C++中,我们基本用new(delete)操作符分配(释放)内存.new操作符为特定类型分配内存,并在新分配的内存中构造该类型的一个对象.new表达式自动运行合适的构造函数来初始化每个动态分配的类类 ...
- L164
“TAKE ONLY memories, leave only footprints” is more than a hiking motto at the Sagarmatha National P ...
- [转载]面试心得与总结---BAT、网易、蘑菇街等
转载自:http://mp.weixin.qq.com/s?__biz=MzIzMDIxNTQ3NA==&mid=2649111851&idx=1&sn=f43c42f7262 ...
- LINUX系统下的磁盘共享
在一台主机上实现磁盘的共享:在另一台主机中进行使用.具体操作如下: 1)在服务器端(server) 1.安装软件和磁盘的划分 yum install targetcli.noarch -y ...
- GPU编程自学2 —— CUDA环境配置
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题.这里主要记录自己的GPU自学历程. 目录 <GPU编程自学1 -- 引言> <GPU编程自学2 -- CUD ...