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

    题目链接:https://cn.vjudge.net/problem/HDU-1532

    AC代码:

    #include<iostream>
    #include<string>
    #include<iomanip>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<stack>
    #include<stdio.h>
    #include<queue>
    using namespace std;
    # define maxn 200+10
    # define inf 0x3f3f3f3f
    # define ll long long
    int Map[maxn][maxn];
    int pre[maxn];
    int vis[maxn];
    int n,m;
    bool bfs(int s,int t){
    memset(vis,0,sizeof(vis));
    queue<int>q;
    vis[s]=1;
    pre[s]=s;
    q.push(s);
    while(!q.empty())
    {
    int top=q.front();
    q.pop();
    for(int i=1;i<=m;i++){
    if(Map[top][i]&&!vis[i]){
    pre[i]=top;
    vis[i]=1;
    if(i==t)return true;
    q.push(i);
    }
    }
    }
    return false;
    }
    int Find(int s,int t){
    int ans=0;
    while(bfs(s,t)){//寻找增广路的过程。
    int minn=inf;
    for(int i=t;i!=s;i=pre[i]){
    minn=min(minn,Map[pre[i]][i]);//寻找最小流,不会出现0的过程,
    }
    for(int i=t;i!=s;i=pre[i]){
    Map[pre[i]][i]-=minn;//正向减权值
    Map[i][pre[i]]+=minn;//反向加权值
    }
    ans+=minn;
    }
    return ans;
    }
    int main(){
    while(~scanf("%d%d",&n,&m)){
    memset(Map,0,sizeof(Map));
    for(int i=1;i<=n;i++){
    int u,v,w;
    scanf("%d%d%d",&u,&v,&w);
    Map[u][v]+=w;//建图的过程
    }
    int ans=Find(1,m);
    printf("%d
    ",ans);
    }
    return 0;
    }
    
  • 相关阅读:
    Centos7
    appium+python常见报错(appium方面)
    python标准库之datetime
    python异常捕获
    python写入文件和读取文件
    python标准库之collections
    python导入类
    python3+robotframework+pycharm安装运行
    python 继承/父类和子类的关系
    python_类
  • 原文地址:https://www.cnblogs.com/letlifestop/p/10262850.html
Copyright © 2011-2022 走看看