/*
ID:hk945801
TASK:ditch
LANG:C++
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int inf=10000001;
struct node{
int c,f;
}a[201][201];
int p[201*201],d[201*201],pre[201];
int main(){
int i,j,k,m,n;
int x;
freopen("ditch.in","r",stdin);
freopen("ditch.out","w",stdout);
cin>>m>>n;
for(i=1;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
a[x][y].c+=z;
}
int pd=1;
while(pd){
pd=0;
int fi=0,l=1;
d[1]=1;
for(i=1;i<=n;i++)p[i]=0;
p[1]=1;
while(fi<l){
fi++;
x=d[fi];
for(i=2;i<=n;i++)
if(!p[i] && (a[x][i].c>a[x][i].f || a[i][x].f>0)){
d[++l]=i;
p[i]=1;
pre[i]=x;
if(i==n){pd=1;break;}
}
if(pd==1)break;
}
if(pd==0)break;
int min=inf;
x=n;
while(x!=1){
if(a[pre[x]][x].c>a[pre[x]][x].f&& a[pre[x]][x].c-a[pre[x]][x].f<min)
min=a[pre[x]][x].c-a[pre[x]][x].f;
else if(a[x][pre[x]].f>0 && a[x][pre[x]].f<min)
min=a[x][pre[x]].f;
x=pre[x];
}
x=n;
while(x!=1){
if(a[pre[x]][x].c>a[pre[x]][x].f)
a[pre[x]][x].f+=min;
else if(a[x][pre[x]].f>0)
a[x][pre[x]].f-=min;
x=pre[x];
}
}
int ans=0;
for(i=2;i<=n;i++)
ans+=a[1][i].f;
cout<<ans<<endl;
return 0;
}

USACO4.2.1 网络流最大流算法的更多相关文章

  1. [讲解]网络流最大流dinic算法

    网络流最大流算法dinic ps:本文章不适合萌新,我写这个主要是为了复习一些细节,概念介绍比较模糊,建议多刷题去理解 例题:codevs草地排水,方格取数 [抒情一下] 虽然老师说这个多半不考,但是 ...

  2. HDU1532 网络流最大流【EK算法】(模板题)

    <题目链接> 题目大意: 一个农夫他家的农田每次下雨都会被淹,所以这个农夫就修建了排水系统,还聪明的给每个排水管道设置了最大流量:首先输入两个数n,m ;n为排水管道的数量,m为节点的数量 ...

  3. 网络流之最大流算法(EK算法和Dinc算法)

    最大流 网络流的定义: 在一个网络(有流量)中有两个特殊的点,一个是网络的源点(s),流量只出不进,一个是网络的汇点(t),流量只进不出. 最大流:就是求s-->t的最大流量 假设 u,v 两个 ...

  4. (通俗易懂小白入门)网络流最大流——EK算法

    网络流 网络流是模仿水流解决生活中类似问题的一种方法策略,来看这么一个问题,有一个自来水厂S,它要向目标T提供水量,从S出发有不确定数量和方向的水管,它可能直接到达T或者经过更多的节点的中转,目前确定 ...

  5. 网络流最大流——dinic算法

    前言 网络流问题是一个很深奥的问题,对应也有许多很优秀的算法.但是本文只会讲述dinic算法 最近写了好多网络流的题目,想想看还是写一篇来总结一下网络流和dinic算法以免以后自己忘了... 网络流问 ...

  6. [POJ1273][USACO4.2]Drainage Ditches (网络流最大流)

    题意 网络流最大流模板 思路 EK也不会超时 所以说是一个数据比较水的模板题 但是POJ有点坑,多组数据,而且题目没给 哭得我AC率直掉 代码 用的朴素Dinic #include<cstdio ...

  7. [知识点]网络流之Dinic算法

    // 此博文为迁移而来,写于2015年2月6日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vrg4.html      ...

  8. hihocoder网络流一·Ford-Fulkerson算法

    网络流一·Ford-Fulkerson算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho住在P市,P市是一个很大很大的城市,所以也面临着一个大城市都会遇 ...

  9. 最大流算法-ISAP

    引入 最大流算法分为两类,一种是增广路算法,一种是预留推进算法.增广路算法包括时间复杂度\(O(nm^2)\)的EK算法,上界为\(O(n^2m)\)的Dinic算法,以及一些其他的算法.EK算法直接 ...

随机推荐

  1. javascript 闭包 通俗解释

    代码段 function foo(){ var a = 2; function bar(){ console.log(a); } return bar; } var baz = foo(); baz( ...

  2. 解决Android SDK Manager下载问题和android studio每次启动都要在fetching Android sdk compoment information

    1.能解决国内访问Google服务器的困难启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - ...

  3. 【Oracle】Windows定时计划每天备份数据库

    脚本 OracleBakEveryDay.bat @echo off echo ================================================ echo Window ...

  4. 1、第一个JSP

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...

  5. Android蓝牙——HID开发

    代码地址如下:http://www.demodashi.com/demo/13891.html 原文地址: https://blog.csdn.net/VNanyesheshou/article/de ...

  6. iOS-开发者相关的几种证书(转)

    分享一篇关于苹果开发者证书非常详细的解释. 哈哈,我太懒了,直接转发链接. iOS-开发者相关的几种证书

  7. C#:DataGridView控件操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  8. unity, 内置shader下载地址

    在unity的download页面上能找到Built in shaders的下载连接.

  9. Ribbon 和 wowza 的集成开发

            前言        Ribbon 是提供 REST 服务的区域感知负载均衡器,它在 wowza 的前端,应该部署在专业的 REST 容器下,而不是流媒体服务器 wowza 下. 本文介 ...

  10. atitit.提升兼容性最佳实践 o9o

    atitit.提升兼容性最佳实践 o9o.doc 1. Atitit.兼容性的"一加三"策略 1 2. 扩展表模式 1 3. 同时运行模式 1 3.1. 完美的后向兼容性 2 3. ...