网络流
算球?
在校学生
展开
-
hdu 3549 Flow Problem(最大流,Edmond Karp)
和1532题一样的套路 #include #include #include #include #define INF 99999999 #define len 1005 using namespace std; int r[len][len]; int pre[len]; bool vis[len]; int N,M; bool BFS(int s, int t) { mems原创 2016-06-26 14:48:21 · 353 阅读 · 0 评论 -
poj 2396 Budget(有源汇上下界可行流)
这题的建图真恶心。好不容易写完后结果还wa了,顿时生无可恋啊,看了下discuss,说不能输出负数,最后不能输出多余的空行,我把这俩都改了,就AC了,虽说那里说这是在zoj不能ac的原因,不过在poj也适用,哈哈。 思路:每行为一个点,每列为一个点,给出的限制就是行列之间连线的流的上下界,初始下届为0,上界为INF。然后建好图之后,建立一个虚拟源点和虚拟汇点,源点和边连线,流量上下界为行的和,列和原创 2017-11-13 13:57:05 · 382 阅读 · 0 评论 -
poj 2195 Going Home(最小费用流)
建立一个虚拟原点s和虚拟汇点t。s到每个H连接一个容量为1,花费为0的边。每个m到t连接一个容量为1,花费为0的边,然后每个H对每个m建边。 直接上板子。。#include <stdio.h> #include <string.h> #include <vector> #include <algorithm> using namespace std;struct edge { int to原创 2017-11-03 13:30:23 · 254 阅读 · 0 评论 -
poj 3068 "Shortest" pair of paths(最小费用流)
两个东西不能在一块运输,说明路的容量是1,就运俩东西,流量就是2。流量为2的最小费用流。直接上板子。这个板子是通过bellman-ford算法来寻找最短路,进而沿最短路增广的。#include <stdio.h> #include <string.h> #include <vector> #include <algorithm> using namespace std;struct edge {原创 2017-11-03 12:43:14 · 363 阅读 · 0 评论 -
zoj 2314 reactor cooling(无源汇有上下界可行流)
初次接触,https://www.cnblogs.com/liu-runda/p/6262832.html,通过这个博客学习的建图方式。建好图后套板子即可。#include <bits/stdc++.h> using namespace std; const int MAXN = 300; const int INF = 0x7fffffff; struct edge { edge(){}原创 2017-11-12 20:57:46 · 333 阅读 · 0 评论 -
poj 2112 Optimal Milking(最大流,二分,floyd)
最小化最大值,二分。先用floyd处理两点之间的最短路,然后二分距离,判断当前距离是否合法。因为题目说至少有一个解,所以二分时对与每个距离,判断最大距离是当前距离的情况,能否使每头牛都接受服务。一直找到最小的最大距离。 心态写炸了,一直tle。http://www.hankcs.com/program/algorithm/poj-2112-optimal-milking-manager.html原创 2017-10-28 16:04:39 · 198 阅读 · 0 评论 -
51nod 1442 士兵的旅行(最大流)
经典网络流模型。虚拟源点,汇点,拆点。拆点是因为每个士兵只能走一步。拆点后可以保证士兵只能走一步远。然后判断是否满流和移动前人数总和是否等于移动后人数总和。#include <bits/stdc++.h> using namespace std; const int MAXN = 1010; const int INF = 0x7fffffff; struct edge { int to,c原创 2017-10-27 12:34:10 · 308 阅读 · 0 评论 -
hdu 1532 Drainage Ditches(最大流,Edmond Karp)
前段时间看最大流,一直没看懂反向弧,直接导致我一蹶不振,昏沉了一段时间。最近又看最大流,找到了一篇不错的入门文章,我终于看懂反向弧了 文章地址:http://www.wutianqi.com/?p=3107 代码直接套的刘汝佳紫书的模板,一点都没改动 #include #include #include #include #include using namespace std原创 2016-06-26 12:36:05 · 290 阅读 · 0 评论 -
最大流 — Edmond Karp算法
Edmond Karp算法的大概思想: 反复寻找源点s到汇点t之间的增广路径,若有,找出增广路径上每一段[容量-流量]的最小值delta,若无,则结束。 在寻找增广路径时,可以用BFS来找,并且更新残留网络的值(涉及到反向边)。 而找到delta后,则使最大流值加上delta,更新为当前的最大流值。 (粗体表明需要掌握的概念) 关于反向边: 以下摘至HD转载 2016-06-26 12:44:06 · 535 阅读 · 0 评论 -
poj 1459 Power Network(最大流,Edmond Karp)
题目大意:总公有nodes个节点,有np个发电站,nc个用户,m条传输线路,每个发电站有个最大的发电量,每个用户有个最大的接受量,问从发电站到用户最多可以发电多少。 思路:多源点多汇点最大流,添加一个超级源点,一个超级汇点#include <cstdio> #include <cstring> #include <queue> using std::queue; #define min(a,b)原创 2017-02-05 19:37:16 · 302 阅读 · 0 评论 -
poj 3422 Kaka's Matrix Travels(最小费用流)
题目在《挑战程序设计竞赛》的练习题的最小费用流分类里。看到后第一反应是dp,想到了 51Nod 1084 矩阵取数问题 V2 这个题,这个题是个多进程dp,从左上走到右下,走两次。然后就去搜了下这个题的题解:http://www.hankcs.com/program/algorithm/poj-3422-kakas-matrix-travels.html 主要是不怎么会建图,看了下题解的注释,然后原创 2017-11-03 19:30:21 · 265 阅读 · 0 评论