题意

汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领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 地震逃生的更多相关文章

  1. 洛谷 P10P1343 地震逃生 改错

    P1343 地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有\(n\)个点,\(m\)条边.1号点为教室,\ ...

  2. 洛谷 P1343 地震逃生

    P1343地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每 ...

  3. 「洛谷P1343」地震逃生 解题报告

    P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...

  4. P1343 地震逃生(最大流板题)

    P1343 地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...

  5. P1343 地震逃生

    题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量 ...

  6. 【u033】地震逃生

    Time Limit: 1 second Memory Limit: 64 MB [问题描述] 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一 ...

  7. 【luogu P1343 地震逃生】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1343 菜 #include <queue> #include <cstdio> #i ...

  8. 【洛谷P1343】地震逃生

    一道傻吊的网络流题,wori我写的读入优化怎么老T? 远离读入优化报平安? #include<bits/stdc++.h> #define N 4005 #define inf 10000 ...

  9. [Luogu1343]地震逃生 最大流

    题目链接:https://www.luogu.org/problem/show?pid=1343 dinic跑最大流. #include<cstdio> #include<cstri ...

随机推荐

  1. centos 6 安装python2.7和pip

    由于scrapy1.0的发布,想在Linux上测试,所以安装了centos6.6:但是它的python版本为2.6,很多东西都不支持,所以需要升级为2.7: 首先是在window7上安装虚拟机,然后安 ...

  2. Unity使用Win10语音

    1.    引入头文件 using UnityEngine.Windows.Speech; 2.    设置识别词 public string[] keywords = new string[] { ...

  3. IdentityServer4在Asp.Net Core中的应用(二)

    继续上次授权的内容,客户端模式后我们再说以下密码模式,先回顾下密码模式的流程: 我们还是使用上次的代码,在那基础上修改,在IdentityServer4里面有一个IdentityServer4.Tes ...

  4. 使用ASP.NET 的缓存机制的示例

    if (HttpContext.Current.Cache["code_" + CodeType] == null) { SysCodeService codeService = ...

  5. 浅谈java中源码常见的几个关键字(native,strictfp,transient,volatile)

    最近看源码总发现一些没见过的关键字,今天就来整理一下native,strictfp,transient,volatile native 本地 native是与C++联合开发的时候用的!java自己开发 ...

  6. [oracle原]访问局域网内出现“ORA-12541:TNS:无监听程序”

    近日在服务器局域网内27电脑上安装了oracle11g,本机上访问此数据库正常.但在局域网内其它机器上访问27上的数据库时,出现“ORA-12541:TNS:无监听程序”错误. 查27上的配置:D:\ ...

  7. 什么情况下用resultType和 resultMap

    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap 那什么情况下用resultType? resultMap 一般用在什么情况下?   如 ...

  8. Docker 生态

    Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker 自从发布以来发生了很多的变化,并且有些 ...

  9. mac下csv乱码解决办法

    到csv目录下, 用终端执行以下命令: iconv -f UTF8 -t GB18030 a.csv >b.csv

  10. SqlServer 转 Oracle 的几点注意

    (转自:http://www.2cto.com/database/201208/146740.html) 1.字符型的字段相加需要用“||”,如果用“+”的话,会报“无效的数字”的错误.   2.类似 ...