[hdu1532]最大流
裸最大流,求最大流一般步骤如下:
(1)所有正向边权初始化为容量,反向边权初始化为0
(2)找增广路
(3)找到则进入(4),否则得到最大流并退出
(4) 增广路上所有边减去最小边权,相应的方向边加上最小边权,然后返回(2)
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89 
90 
91 
92 
93 
94 
 | 
#include <iostream>#include <cstdio>#include <cmath>#include <cstdlib>#include <cstring>#include <vector>#include <ctime>#include <deque>#include <queue>using namespace std;struct MaxFlow {private:    const static int maxn = 2e2 + 7;    struct Edge {        int u, v, w;        Edge(int u = 0, int v = 0, int w = 0): u(u), v(v), w(w) {}    };    vector<vector<int> > G;    vector<Edge> E;    int S, T, maxflow;    bool vis[maxn];    int Q[maxn], fa[maxn], Y[maxn], head, tail, flow[maxn];public:    void init(int s, int t, int n) {        G.clear();        G.resize(n + 2);        E.clear();        S = s;        T = t;        maxflow = 0;    }    void add(int u, int v, int w) {        E.push_back(Edge(u, v, w));        E.push_back(Edge(v, u, 0));        int sz = E.size();        G[u].push_back(sz - 2);        G[v].push_back(sz - 1);    }    bool bfs(int src) {        head = tail = 0;        memset(vis, 0, sizeof(vis));        Q[tail ++] = src;        flow[0] = 0x7fffffff;        vis[src] = true;        while (head < tail) {            int node = Q[head ++];            if (node == T) {                maxflow += flow[head - 1];                int p = head - 1;                while (p) {                    E[Y[p]].w -= flow[head - 1];                    E[Y[p] ^ 1].w += flow[head - 1];                    p = fa[p];                }                return true;            }            for (int i = 0; i < G[node].size(); i ++) {                int e = G[node][i];                if (!vis[E[e].v] && E[e].w) {                    vis[E[e].v] = true;                    fa[tail] = head - 1;                    Y[tail] = e;                    flow[tail] = min(flow[head - 1], E[e].w);                    Q[tail ++] = E[e].v;                }            }        }        return false;    }    int solve() {        while (bfs(S));        return maxflow;    }} ;MaxFlow solver;int main() {#ifndef ONLINE_JUDGE    freopen("in.txt", "r", stdin);#endif // ONLINE_JUDGE    int n, m;    while (cin >> m >> n) {        solver.init(1, n, n);        for (int i = 0; i < m; i ++) {            int u, v, w;            scanf("%d%d%d", &u, &v, &w);            solver.add(u, v, w);        }        cout << solver.solve() << endl;    }    return 0;} | 
[hdu1532]最大流的更多相关文章
- HDU1532最大流 Edmonds-Karp,Dinic算法 模板
		
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
 - hdu1532 最大流板子题
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目给出源点和漏点,还有一些边,要求源与漏之间的最大流,我采用了Edmonds Karp算法,该 ...
 - hdu1532 (最大流入门,EK算法)
		
看着这个博客 然后敲了hdu1532这个入门题,算是对最大流有点理解了 #include <stdio.h> #include <string.h> #include < ...
 - 【最大流之EdmondsKarp算法】【HDU1532】模板题
		
题意:裸的最大流,什么是最大流,参考别的博客 运用复杂度最高的EK算法 O(M*N),模板来自紫书 #include <cstdio> #include <cstdlib> # ...
 - HDU1532 网络流最大流【EK算法】(模板题)
		
<题目链接> 题目大意: 一个农夫他家的农田每次下雨都会被淹,所以这个农夫就修建了排水系统,还聪明的给每个排水管道设置了最大流量:首先输入两个数n,m ;n为排水管道的数量,m为节点的数量 ...
 - 【最大流之ek算法】HDU1532 求最大流
		
本来是继续加强最短路的训练,但是遇到了一个最短路 + 最大流的问题,最大流什么鬼,昨天+今天学习了一下,应该对ek算法有所了解,凭借学习后的印象,自己完成并ac了这个最大流的模板题 题目大意:都是图论 ...
 - HDU-1532 Drainage Ditches (最大流,EK算法模板)
		
题目大意:最大流的模板题...源点是0,汇点是n-1. 代码如下: # include<iostream> # include<cstdio> # include<cma ...
 - POJ1273&&Hdu1532 Drainage Ditches(最大流dinic)                                                                                            2017-02-11 16:28             54人阅读              评论(0)              收藏
		
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
 - hdu-1532 Drainage Ditches---最大流模板题
		
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目大意: 给出有向图以及边的最大容量,求从1到n的最大流 思路: 传送门:最大流的增广路算法 ...
 
随机推荐
- mybatis配置的逻辑删除不好使了
			
在使用mybatisplus中,可使用逻辑删除.案例中,使用mybatisplus逆向生成model,使用delete_status为识别逻辑删除字段. springboot 中配置启动逻辑删除 my ...
 - 博客搬家 - 记第四次搬家(hugo建站推送到谷歌云存储)
			
写在前面,搬迁记录 记录我的博客这次搬家过程.我的博客之前经历过: wordpress github page Bitcron - 机制很不错(写完的博客自动保存到dropbox并发布,可惜搜索引擎的 ...
 - 快速从零开始安装Laravel5.2教程
			
前面 本文默认你Win电脑什么都没装,也就是从零开始安装Laravel,并且环境都由我来指定分配哈! 环境 首先搭建运行环境,先到 PhpStudy官网 下载PhpStudy的Windows版本.然后 ...
 - StringRedisTemplate的常用操作
			
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向r ...
 - kubeadm 默认镜像配置问题引申
			
背景: 每次使用功能kubeadm的时候都需要提前准备好镜像,为什么自定义使用的镜像源呢? 在没有翻越围墙时 kubeadm init --kubernetes-version=v1.13.0 --p ...
 - Java 后台设置session成功,获取为空
			
cookie secure当服务器使用https时,容易出现漏洞SSL cookie without secure flag set,敏感cookie这时就需要打开cookie secure,服务器端 ...
 - Spring boot 自定义banner
			
Spring Boot启动的时候会在命令行生成一个banner,其实这个banner是可以自己修改的,本文将会将会讲解如何修改这个banner. 首先我们需要将banner保存到一个文件中,网上有很多 ...
 - Java初学者最近三次作业的心得体会
			
作为一个初学者,简单的谈一下自己的作业心得体会.如果你是完全没有接触过Java的学习,本篇博文可能会有些收获,如果你已经学习Java有一段时间了,那么可以放弃这篇文章了,因为这篇文章讲解的是基本的东西 ...
 - Eclipse Collections:让Java Streams更上一层楼
			
\ 关键要点 \\ Eclipse Collections是一个高性能的Java集合框架,为原生JDK集合增加了丰富的功能.\\t Streams是JDK的一个非常受欢迎的功能,但它缺少了一些特性,严 ...
 - C# 基础知识系列- 14 IO篇 文件的操作 (3)
			
本篇继续前两篇内容,跟大家介绍一下Path类以及FileSystemInfo这个类的主要方法和属性. 上文提到,在<C# 基础知识系列-IO篇>之文件相关的内容完结之后,会带领大家开发一个 ...