学长的代码
#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std; const int MAXN = 1005;
const
int oo = 1e9+7; struct Edge
{

int
v, flow, next;
}
edge[MAXN];
int
Head[MAXN], cnt;
int
Layer[MAXN]; void InIt()
{

cnt = 0;
memset(Head, -1, sizeof(Head));
}

void
AddEdge(int u, int v, int flow)
{

edge[cnt].v = v;
edge[cnt].flow = flow;
edge[cnt].next = Head[u];
Head[u] = cnt++; swap(u, v); edge[cnt].v = v;
edge[cnt].flow = 0;
edge[cnt].next = Head[u];
Head[u] = cnt++; }
bool
BFS(int start, int End)
{

memset(Layer, 0, sizeof(Layer));
queue<int> Q;
Q.push(start);
Layer[start] = 1; while(Q.size())
{

int
u = Q.front();Q.pop(); if(u == End)return true; for(int j=Head[u]; j!=-1; j=edge[j].next)
{

int
v = edge[j].v; if(Layer[v] == 0 && edge[j].flow)
{

Layer[v] = Layer[u] + 1;
Q.push(v);
}
}
}
return false;
}

int
DFS(int u, int MaxFlow, int End)
{

if
(u == End)return MaxFlow; int uflow = 0; for(int j=Head[u]; j!=-1; j=edge[j].next)
{

int
v = edge[j].v; if(Layer[v]==Layer[u]+1 && edge[j].flow)
{

int
flow = min(edge[j].flow, MaxFlow-uflow);
flow = DFS(v, flow, End); edge[j].flow -= flow;
edge[j^1].flow += flow;
uflow += flow; if(uflow == MaxFlow)
break
;
}
}
if(uflow == 0)
Layer[u] = 0; return uflow;
}

int
Dinic(int start, int End)
{

int
MaxFlow = 0; while(BFS(start, End) == true)
MaxFlow += DFS(start, oo, End); return MaxFlow;
}
int main()
{

int
N, M; while(scanf("%d%d", &M, &N) != EOF)
{

int
u, v, flow; InIt(); while(M--)
{

scanf("%d%d%d", &u, &v, &flow);
AddEdge(u, v, flow);
}
printf("%d\n", Dinic(1, N));
}
return 0;
}

HDU 1532 --&&-- POJ1273 dinic 算法的更多相关文章

  1. HDU 1532 (Dinic算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目大意: 就是由于下大雨的时候约翰的农场就会被雨水给淹没,无奈下约翰不得不修建水沟,而且是网络 ...

  2. HDU 1532||POJ1273:Drainage Ditches(最大流)

    pid=1532">Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/327 ...

  3. hdu 1532&&poj1273 基础最大流

    #include<stdio.h> #include<string.h> #include<queue> #include<iostream> usin ...

  4. 【最大流之Dinic算法】POJ1273 【 & 当前弧优化 & 】

    总评一句:Dinic算法的基本思想比较好理解,就是它的当前弧优化的思想,网上的资料也不多,所以对于当前弧的优化,我还是费了很大的功夫的,现在也一知半解,索性就写一篇博客,来发现自己哪里的算法思想还没理 ...

  5. POJ1273:Drainage Ditches(最大流入门 EK,dinic算法)

    http://poj.org/problem?id=1273 Description Every time it rains on Farmer John's fields, a pond forms ...

  6. hdu 2435 dinic算法模板+最小割性质

    #include<stdio.h> #include<queue> #include<string.h> using namespace std; #define ...

  7. dinic算法学习(以poj1273为例)

    Dinic 算法模板  Dinic算法是一种比較easy实现的.相对照较快的最大流算法. 求最大流的本质,就是不停的寻找增广路径.直到找不到增广路径为止. 对于这个一般性的过程,Dinic算法的优化例 ...

  8. 最大流EK算法/DINIC算法学习

    之前一直觉得很难,没学过网络流,毕竟是基础知识现在重新来看. 定义一下网络流问题,就是在一幅有向图中,每条边有两个属性,一个是cap表示容量,一个是flow 表示流过的流量.我们要求解的问题就是从S点 ...

  9. hdu 1532 Drainage Ditches(网络流)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目大意是:农夫约翰要把多个小池塘的水通过池塘间连接的水渠排出去,从池塘1到池塘M最多可以排多少 ...

随机推荐

  1. python3的安装,Window与linux

    一.window安装 1.首先是window下的安装. 进入python网站https://www.python.org/downloads/下载页面,选择所需要的版本进行下载. 点击Download ...

  2. cxGrid 根据列值变色(样式)

    在使用cxGrid的过程中,某一个单元格经常需要根据其他单元格的值来做相应的变色,如: 在cxGridDBTableView中,选定要变样式(如背景色.字体属性等)的列, 打开事件Events -&g ...

  3. 【BZOJ4547】Hdu5171 小奇的集合 矩阵乘法

    [BZOJ4547]Hdu5171 小奇的集合 Description 有一个大小为n的可重集S,小奇每次操作可以加入一个数a+b(a,b均属于S),求k次操作后它可获得的S的和的最大值.(数据保证这 ...

  4. oracle用于判断时间条件为当天的写法(当前日期加一天)

    trunc(sysdate + 1, 'dd')为当前日期加一天: 来自: and wf.start_time between sysdate and trunc(sysdate + 1, 'dd') ...

  5. 教程less

    http://lesscss.cn/features/ Overview As an extension to CSS, Less is not only backwards compatible w ...

  6. Less-css扩展多样式

    //扩展Extend Use Method:以在study上扩展多个的样式为例 //Share style 1 .style1{ width:200px; height:15px; color:#ff ...

  7. Java获取任意时间、时间字符串

    /* * 获取时间字符串*/public String getCurrentTime() { SimpleDateFormat sdf = new SimpleDateFormat("yyy ...

  8. mysql中修改字段的类型

    修改表字段的类型: ALTER TABLE 表名  MODIFY COLUMN 字段名 字段类型定义 如:将movie_mark修改为浮点型 alter table new_playing_video ...

  9. 面试题15:链表中倒数第K个结点

    输入一个链表,输出该链表中倒数第k个结点. 方法1: 这个解法要循环两次链表 /* public class ListNode { int val; ListNode next = null; Lis ...

  10. String trim 坑 对于ascii码为160的去不掉

    大家在使用string   的trim去除空格的时候,要注意一个坑呀,对于ascii码为160的去不掉 import java.util.Arrays; /** * Created by bjchen ...