luogu 1343 地震逃生

最大流模版题

ek算法迷之tle一点,dinic秒过

#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;
const int maxn=10010,inf=99999999;
struct node{
    int to,w,rev;
};
int iter[maxn],level[maxn],n;
vector<node>map[maxn];
void add_edge(int s,int t,int w){
    map[s].push_back((node){t,w,map[t].size()});
    map[t].push_back((node){s,0,map[s].size()-1});
}
int dfs(int s,int t,int k){
    if(s==t){
        return k;
    }
    for(int &i=iter[s];i<map[s].size();++i){
        if(level[map[s][i].to]>level[s]&&map[s][i].w>0){
            int d=dfs(map[s][i].to,t,min(k,map[s][i].w));
            if(d>0){
                map[s][i].w-=d;
                map[map[s][i].to][map[s][i].rev].w+=d;
                return d;
            }
        }
    }
    return -1;
}
void bfs(int s){
    memset(level,-1,sizeof(level));
    queue<int>q;
    level[s]=0;
    q.push(s);
    while(!q.empty()){
        int v=q.front();
        q.pop();
        for(int i=0;i<map[v].size();++i){
            if(level[map[v][i].to]<0&&map[v][i].w>0){
                level[map[v][i].to]=level[v]+1;
                q.push(map[v][i].to);
            }
        }
    }
}
int max_flow(int s,int t){
    int ret=0;
    for(;;){
        bfs(s);
        if(level[t]<0)break;
        memset(iter,0,sizeof(iter));
        while(1){
            int d=dfs(s,t,inf);
            if(d==-1)break;
            ret+=d;
        }
    }
    return ret;
}
int main(){
    int m,s,x;
    scanf("%d%d%d",&n,&m,&x);
    for(int i=1;i<=m;++i){
        int s,t,w;
        scanf("%d%d%d",&s,&t,&w);
        add_edge(s,t,w);
    }
    int t=max_flow(1,n);
    if(t>0){
        printf("%d ",t);
        if(x%t==0)printf("%d",x/t);
        else printf("%d",x/t+1);
    }
    else printf("Orz Ni Jinan Saint Cow!");
    return 0;
}
时间: 2024-08-11 03:29:17

luogu 1343 地震逃生的相关文章

【luogu P1343 地震逃生】 题解

题目链接:https://www.luogu.org/problemnew/show/P1343 菜 #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 10000 + 10; const int inf = 1e9; int n, m

洛谷 P1343 地震逃生

题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完. 输入输出格式 输入格式: 第一行3个整数n,m,x(x<2^31,n<=200,m<=20

地震逃生

题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完. 输入输出格式 输入格式: 第一行3个整数n,m,x(x<2^31,n<=200,m<=20

LG1343 地震逃生

题意 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完. \(x<2^{31},n \leq 200,m \leq 2000\) 分析 都不用建模了,直接跑网络

【洛谷P1343】地震逃生

一道傻吊的网络流题,wori我写的读入优化怎么老T? 远离读入优化报平安? #include<bits/stdc++.h> #define N 4005 #define inf 1000000007 using namespace std; int head[4*N],tot=0,n,m,x,s,t,ans; struct Edge{int u,v,next,f;}G[2000010]; inline void addedge(int u,int v,int f){ G[tot].u=u;G[

[洛谷P1343]地震逃生

题目大意:有n个点m条单向边,每条边有一个容量.现有x人要分批从1走到n,问每批最多能走多少人,分几批运完(或输出无法运完). 解题思路:一看就是网络流的题目.每批最多能走多少人,即最大流.分几批运完,除一下即可.当最大流为0时无法运完. 以下是Dinic算法的代码(为什么我那么喜欢用Dinic?因为我个人认为它好写!): C++ Code: #include<cstdio> #include<queue> #include<cstring> using namespa

按算法刷题路线

搜索:八数码,生日蛋糕,靶形数独,(虫食算),最优贸易,引水入城,埃及分数,(p1189) dp:方格取数,树网的核,旅行路线 贪心:huffman,疫情控制 生成树:灾后重建,货车运输 连通块:间谍网络,星球大战 最短路:最优贸易,社交网络 最大流:地震逃生 区间:RMQ,区间连续和 数论:hank儿子题,解方程,虫食算,向量內积,斐波那契数列 字符串:阿里打印机

洛谷2944 [USACO09MAR]地震损失2Earthquake Damage 2

https://www.luogu.org/problem/show?pid=2944 题目描述 Wisconsin has had an earthquake that has struck Farmer John's farm! The earthquake has damaged some of the pastures so that they are unpassable. Remarkably, none of the cowpaths was damaged. As usual,

HDU 2189 悼念512汶川大地震遇难同胞——来生一起走(母函数或完全背包)

悼念512汶川大地震遇难同胞--来生一起走 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3773    Accepted Submission(s): 1913 Problem Description 妈妈你别哭泪光照亮不了我们的路让我们自己慢慢的走 妈妈我会记住你和爸爸的模样记住我们的约定来生一起走 上面这首诗节选自一位诗人纪念遇难