[Luogu1343]地震逃生 最大流
题目链接:https://www.luogu.org/problem/show?pid=1343
dinic跑最大流。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF=<<;
int inline readint(){
// int Num;char ch;
// while((ch=getchar())<'0'||ch>'9');Num=ch-'0';
// while((ch=getchar())>='0'&&ch<='9') Num=Num*10+ch-'0';
// return Num;
int Num;
scanf("%d",&Num);
return Num;
}
int N,M,X;
int to[],ne[],c[],fir[],cnt=;
void Add(int x,int y,int z){
to[cnt]=y,ne[cnt]=fir[x],c[cnt]=z,fir[x]=cnt++;
to[cnt]=x,ne[cnt]=fir[y],c[cnt]=,fir[y]=cnt++;
}
int S,T;
int bfn[],ti=;
int cur[],q[],dep[];
bool Bfs(){
int head=,tail=;
q[]=S;
bfn[S]=++ti;
dep[S]=;
int u;
while(head<=tail){
u=q[head++];
for(int i=fir[u];i!=-;i=ne[i]){
int v=to[i];
if(bfn[v]!=bfn[u]&&c[i]){
bfn[v]=bfn[u];
dep[v]=dep[u]+;
q[++tail]=v;
}
}
}
return bfn[T]==bfn[S];
}
int Dfs(int u,int mxf){
if(!mxf||u==T) return mxf;
int flow=,f;
for(int &i=cur[u];i!=-;i=ne[i]){
int v=to[i];
if(dep[v]==dep[u]+&&(f=Dfs(v,min(mxf,c[i])))>){
c[i]-=f;
c[i^]+=f;
flow+=f;
mxf-=f;
if(!mxf) break;
}
}
return flow;
}
int Dinic(){
int ret=;
while(Bfs()){
memcpy(cur,fir,sizeof(fir));
ret+=Dfs(S,INF);
}
return ret;
}
int main(){
N=readint();
M=readint();
X=readint();
S=;
T=N;
memset(fir,-,sizeof(fir));
for(int i=;i<=M;i++){
int a=readint(),
b=readint(),
c=readint();
Add(a,b,c);
}
int mx=Dinic();
if(!mx){
puts("Orz Ni Jinan Saint Cow!");
return ;
}
printf("%d %d\n",mx,X/mx+(X%mx?:));
return ;
}
[Luogu1343]地震逃生 最大流的更多相关文章
- P1343 地震逃生(最大流板题)
P1343 地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...
- 洛谷 P10P1343 地震逃生 改错
P1343 地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有\(n\)个点,\(m\)条边.1号点为教室,\ ...
- 洛谷 P1343 地震逃生
P1343地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每 ...
- 「洛谷P1343」地震逃生 解题报告
P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...
- P1343 地震逃生
题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量 ...
- 【u033】地震逃生
Time Limit: 1 second Memory Limit: 64 MB [问题描述] 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一 ...
- LG1343 地震逃生
题意 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学 ...
- [洛谷P1343]地震逃生
题目大意:有n个点m条单向边,每条边有一个容量.现有x人要分批从1走到n,问每批最多能走多少人,分几批运完(或输出无法运完). 解题思路:一看就是网络流的题目.每批最多能走多少人,即最大流.分几批运完 ...
- 【luogu P1343 地震逃生】 题解
题目链接:https://www.luogu.org/problemnew/show/P1343 菜 #include <queue> #include <cstdio> #i ...
随机推荐
- table内 获取同一行 其他列的value
table内 获取同一行 其他列的value function move(obj,ud){ var code = document.getElementById("reportName&q ...
- bzoj 3781 小B的询问——分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3781 非常经典的分块套路.于是时间空间比大家的莫队差了好多…… #include<io ...
- MSTAR GUI
1.架构 WIN32 SDK ACT->CTL->API->GE/GOP ACT: Customized logic parts CTL: Behavior widgets API: ...
- 从MySQL获取数据
安装 PM> install-package newtonsoft.json PM> install-package mysql.data string connectionString ...
- 3.sql中的向上递归和向下递归
1.向下递归 select * from table_name where 条件 connect by prior bmbm(本级关联条件)=sjbmbm(上级关联条件) start with bmb ...
- SpannableStringBuilder 用法浅析以及仿陌陌表情
SpannableStringBuilder 官方文档解释:这个类可以使文本的内容和标记都可以改变.当我们要为TextView或者Edittext里面的文字加入加入一些效果,如下划线,颜色标 识,超 ...
- Eclipse SVN 图标解释
[转]http://blog.sina.com.cn/s/blog_64941c8101018dno.html - 已忽略版本控制的文件.可以通过Window → Preferences → Team ...
- 【WIP】iOS 网络通讯
创建: 2018/06/05 网络通讯的基础 App Transport Security iOS9以后增加的功能 只允许满足Apple标准的https通信 ● 对ATS进行改动的话发布的审查时有可 ...
- 如何在内网打洞使得能暴露mstsc端口
说明: 1.目标机器Target,有全部控制权,其所处网络无法向外网暴露端口,但是已知Target的外网地址:Target_internet_addr 2.交换机器Exchange,有全部控制权,其所 ...
- uoj#275. 【清华集训2016】组合数问题(数位dp)
传送门 假设有\(k|{n\choose m}\),因为\(n!\)中质因子\(k\)的次数为\(S(n)=\left\lfloor\frac{n}{k}\right\rfloor+\left\lfl ...