[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 ...
随机推荐
- python装饰器精髓代码
#!/usr/bin/env python #-*- coding:utf-8 -*- import time def foo(func): def inner(): print('fs...') f ...
- UOJ309 UNR #2 排兵布阵
包含不小于$\sqrt n$列的只有不大于$\sqrt n$行,修改时这些行打标记,否则暴力更新,操作一列的时候暴力更新这些行.合并没啥影响直接搞就是了.更新需要访问位置,感觉必须用哈希表,并不是特别 ...
- Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户 ...
- python装饰器执行顺序
. python 装饰器 1) 2层装饰器 def decorator(func): # TODO def wrapper(*args, **kwargs): # TODO func(*args, * ...
- zabbix snmp、jmx配置使用
SNMP: snmp是很古老的监控,我萌几乎可以在所有设备上看到它的身影 [root@linux-node1 ~]# yum install net-snmp net-snmp-libs net-sn ...
- hibernate 学习 一 基本概念
1: Hibernate对JDBC进行封装,以面向对象的方式对关系型数据库进行操作. 2: Hibernate的配置文件: hibernate.properties 或者 hibernate.c ...
- 在xshell中使用Linux语言打开错误提示
上线项目到服务器后, 有时候有的功能跟本地调试的不一样,这时候就需要设置打开display_errors = On: 首先,cd .. 进入上一级,ll 罗列当前目录,跟home当前目录的有这个usr ...
- 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)
首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼.阅读之前请参考 上一篇 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要 ...
- 【216】◀▶ IDL 字符串操作说明 (黑底)
参考:String Processing Routines —— 字符串处理函数 参考:IDL_String Methods 01 STRING 返回字符串. 02 STRCMP 比较字符串, ...
- Visual Studio 2017 本地调试 Chrome浏览器自动退出
在使用VS 2017(15..6 .15.7)对.NET Core MVC应用程序进行本地调试的时候,选择使用Chrome浏览器.但输入中文 就自动关闭Chrome浏览器,随后结束调试.但复制.粘贴中 ...