zoukankan      html  css  js  c++  java
  • 【洛谷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[tot].v=v;G[tot].f=f;G[tot].next=head[u];head[u]=tot++;
        G[tot].u=v;G[tot].v=u;G[tot].f=0;G[tot].next=head[v];head[v]=tot++;
    }
    //struct Queue{
    //    int q[1000010],l,r;
    //    inline bool empty(){return l>r;}
    //    inline void push(int x){q[r++]=x;}
    //    inline void pop(){l++;}
    //    inline int front(){return q[l];}
    //    inline void clear(){l=0;r=0;}
    //};
    int level[12010];queue<int> q;
    struct FastIO{
        static const int S=1310720;
        int wpos;char wbuf[S];
        FastIO():wpos(0) {}
        inline int xchar(){
            static char buf[S];
            static int len=0,pos=0;
            if(pos==len)pos=0,len=fread(buf,1,S,stdin);
            if(pos==len)return -1;
            return buf[pos++];
        }
        inline int xuint(){
            int c=xchar(),x=0;
            while(c<=32&&~c)c=xchar();
            if(c==-1)return -1;
            for(;'0'<=c&&c<='9';c=xchar())x=x*10+c-'0';
            return x;
        }
    }io;
    inline bool bfs(int s,int t){
        queue<int>q;
        memset(level,0,sizeof(level));
        q.push(s);level[s]=1;
        while(!q.empty()){
            int u=q.front();q.pop();
            if(u==t)return 1;
            for(int i=head[u];~i;i=G[i].next){
                int v=G[i].v,f=G[i].f;
                if(f&&!level[v])q.push(v),level[v]=level[u]+1;
            }
        }
        return 0;
    }
    int dfs(int u,int maxf,int t){
        if(u==t)return maxf;int rat=0;
        for(int i=head[u];~i&&rat<maxf;i=G[i].next){
            int v=G[i].v,f=G[i].f;
            if(f&&level[v]==level[u]+1){
                f=dfs(v,min(f,maxf-rat),t);
                G[i].f-=f;G[i^1].f+=f;rat+=f;
            }
        }
        if(!rat)level[u]=inf;
        return rat;
    }
    inline void dinic(){while(bfs(s,t))ans+=dfs(s,inf,t);}
    inline int read(){
        int f=1,x=0;char ch;
        do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
        do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
        return f*x;
    }
    int main(){
        s=1;for(int i=0;i<=N;i++)head[i]=-1;
        n=io.xuint();m=io.xuint();x=io.xuint();t=n;int u,v,w,f;
        for(int i=1;i<=m;i++){
            u=io.xuint(),v=io.xuint(),f=io.xuint();
            addedge(u,v,f);
        }
        dinic();
        if(!ans)puts("Orz Ni Jinan Saint Cow!");
        else printf("%d %d
    ",ans,x/ans+(x%ans!=0));
        return 0;
    }
  • 相关阅读:
    整数拆分
    win8 使用notepad++写C代码
    hessian客户端调用服务端测试类
    多线程环境下保证实现单线程的案例
    windows server 2008开机启动多个tomcat服务方法及遇到问题
    解决加载静态文件无法被浏览器缓存问题
    【拦截器】HandlerInterceptor接口
    【pac4j】OAuth 认证机制 入门篇
    【Linux部署 · JDK】在linux系统安装jdk
    【Linux部署 · GIT】在linux系统安装git和配置实现SSH
  • 原文地址:https://www.cnblogs.com/zcysky/p/6858481.html
Copyright © 2011-2022 走看看