zoukankan      html  css  js  c++  java
  • 网络流

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=31317#overview

    #include <iostream>
    #include <queue>
    #include <algorithm>
    #include <string.h>
    using namespace std;
    const int msize=250;
    
    int N,M;
    int r[msize][msize];
    int pre[msize];
    bool vis[msize];
    
    bool BFS(int s,int t)
    {
        queue<int>que;
        memset(pre,-1,sizeof(pre));
        memset(vis,false,sizeof(vis));
    
        pre[s]=s;
        vis[s]=true;
        que.push(s);
        int p;
        while(!que.empty())
        {
            p=que.front();
            que.pop();
            for(int i=1;i<=M;i++)
            {
                if(r[p][i]>0&&!vis[i])
                {
                    pre[i]=p;
                    vis[i]=true;
                    if(i==t)
                        return true;
                    que.push(i);
                }
            }
        }
        return false;
    }
    
    int EK(int s,int t)
    {
        int maxflow=0;
        int d;
        while(BFS(s,t))
        {
            d=0x7fffffff;
            for(int i=t;i!=s;i=pre[i])
                d=min(d,r[pre[i]][i]);
            for(int i=t;i!=s;i=pre[i])
            {
                r[pre[i]][i]-=d;
                r[i][pre[i]]+=d;
            }
            maxflow+=d;
        }
        return maxflow;
    }
    
    int main()
    {
        while(cin>>N>>M)
        {
            memset(r,0,sizeof(r));
            int s,e,c;
            for(int i=0;i<N;i++)
            {
                cin>>s>>e>>c;
                r[s][e]+=c;
            }
            cout<<EK(1,M)<<endl;
        }
        return 0;
    }
    View Code
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    using namespace std;
    const int maxsize=110;
    int n,np,nc,m;
    int graph[maxsize][maxsize];
    int pre[maxsize];
    bool vis[maxsize];
    int power;
    char temp[20];
    int u,v,z;
    bool BFS(int s,int t)
    {
        memset(pre,-1,sizeof(pre));
        memset(vis,false,sizeof(vis));
        queue<int>Q;
        Q.push(s);
        pre[s]=s;
        vis[s]=true;
        int p;
        while(!Q.empty())
        {
            p=Q.front();
            Q.pop();
            for(int i=0;i<=n+1;i++)
            {
                if(graph[p][i]>0&&!vis[i])
                {
                    vis[i]=true;
                    pre[i]=p;
                    if(i==t)
                        return true;
                    Q.push(i);
                }
            }
        }
        return false;
    }
    int EK(int s,int t)
    {
        int maxflow=0;
        int delta;
        while(BFS(s,t))
        {
            delta=0x7fffffff;
            for(int i=t;i!=s;i=pre[i])
                delta=min(delta,graph[pre[i]][i]);
            for(int i=t;i!=s;i=pre[i])
            {
                graph[pre[i]][i]-=delta;
                graph[i][pre[i]]+=delta;
            }
            maxflow+=delta;
        }
        return maxflow;
    }
    int main()
    {
        while(scanf("%d%d%d%d",&n,&np,&nc,&m)!=EOF)
        {
            memset(graph,0,sizeof(graph));
            power=0;
            for(int i=0;i<m;i++)
            {
                scanf("%s",temp);
                sscanf(temp,"(%d,%d)%d",&u,&v,&z);
                graph[u+1][v+1]+=z;
            }
            for(int i=0;i<np;i++)
            {
                scanf("%s",temp);
                sscanf(temp,"(%d)%d",&u,&z);
                graph[0][u+1]=z;
                power+=z;
            }
            for(int i=0;i<nc;i++)
            {
                scanf("%s",temp);
                sscanf(temp,"(%d)%d",&u,&z);
                graph[u+1][n+1]=z;
            }
            cout<<EK(0,n+1)<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    C#类型转换
    C#运算符
    SQL视图与触发器
    存储过程
    SQL 变量
    SQL 经典练习题
    字符串函数,数据类型转换,链接查询,纵向查询
    常用的 SQL 函数
    习题整理(1)
    子查询的部分内容
  • 原文地址:https://www.cnblogs.com/whatthefy/p/3409264.html
Copyright © 2011-2022 走看看