首页 > 其他 > 详细

usaco Drainage Ditches

时间:2015-09-30 14:33:54      阅读:199      评论:0      收藏:0      [点我收藏+]

 赤裸裸的网络流。

暴力增广路算法就能过。

/*
ID: modengd1
PROG: ditch
LANG: C++
*/
#include <iostream>
#include <stdio.h>
#include <vector>
#include <memory.h>
using namespace std;
#define INF 0x7fffffff

int E[201][201];
bool used[201];

/*
void add_edge(int from,int to,int cap)
{
    G[from].push_back(edge{to,cap,G[to].size()});
    G[to].push_back(edge{from,0,G[from].size()-1});
}
*/
int DFS(int v,int t,int f)
{
    if(v==t)
        return f;
    used[v]=true;
    for(int i=1;i<201;i++)
    {
        if(!used[i]&&E[v][i]>0)
        {
            int d=DFS(i,t,min(f,E[v][i]));
            if(d>0)
            {
                E[v][i]-=d;
                E[i][v]+=d;
                return d;
            }
        }
    }
    return 0;//没有这句可能超时
}

int max_flow(int s,int t)
{
    int flow = 0;
    while(true)
    {
        memset(used,false,sizeof(used));
        int f=DFS(s,t,INF);
        if(f == 0)
            return flow;
        flow+=f;
    }
}
int main()
{
    int N,M,a,b,c;
    freopen("ditch.in","r",stdin);
    freopen("ditch.out","w",stdout);
    memset(E,0,sizeof(E));
    cin>>N>>M;
    for(int i=0;i<N;i++)
    {
        cin>>a>>b>>c;
        E[a][b]+=c;
    }
    cout<<max_flow(1,M)<<endl;
    return 0;
}

  

usaco Drainage Ditches

原文:http://www.cnblogs.com/modengdubai/p/4849003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!