
网络流
f_zyj
一个追逐蝴蝶的人!
展开
-
无向图最小割
ACM模版无向图最小割/* * INIT: 初始化邻接矩阵g[][] * CALL: res = mincut(n); * 注: Stoer-Wagner Minimum Cut; * 找边的最小集合,若其被删去则图变得不连通(我们把这种形式称为最小割问题) */#define typec int // type of resconst typec原创 2016-07-19 00:00:07 · 1462 阅读 · 0 评论 -
HDU-1532-Drainage Ditches
ACM模版描述题解基础的最大流问题,模版题,我用了一个十分成熟的 Dinic 算法模版,用了邻接表优化,代码略微长,但是效率还是不错的。GG代码#include <iostream>#include <cstring>#include <cstdio>/* * Dinic 最大流 O(V^2 * E) * INIT: ne=2; head[]置为0; addedge()加入所有弧; *原创 2017-03-17 17:30:23 · 569 阅读 · 0 评论 -
HDU-3549-Flow Problem
ACM模版描述题解基础最大流问题,直接套模版即可,Dinic 算法。代码#include <iostream>#include <cstring>#include <cstdio>/* * Dinic 最大流 O(V^2 * E) * INIT: ne=2; head[]置为0; addedge()加入所有弧; * CALL: flow(n, s, t); */#define t原创 2017-03-19 19:29:28 · 355 阅读 · 0 评论 -
HDU-5889-Barricade
ACM模版描述题解给定 nn 个结点和 m 条路径,路径的长度均为 1,破坏每条路径都有对应的代价,然后会有怪兽从 m 往 1 结点进攻,但是这些智障怪兽只会从最短路进攻,求代价的最小割。那么我们先进行最短路求得最短路径,然后将最短路径添加到网络流系统中,求得最大流,也就是最小割。酱紫结果就出来了哦!!!模版题~~~代码#include <iostream>#include <cstring>#原创 2017-06-28 22:17:07 · 391 阅读 · 0 评论 -
二分图匹配相关
ACM模版匈牙利算法邻接矩阵+DFS/* * 初始化:g[][]两边顶点的划分情况 * 建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹配 * g没有边相连则初始化为0 * uN是匹配左边的顶点数,vN是匹配右边的顶点数 * 调用:res=hungary();输出最大匹配数 * 优点:适用于稠密图,DFS找增广路,实现简洁易于理解 * 时间复杂度:原创 2016-07-18 17:47:15 · 3670 阅读 · 0 评论 -
51Nod-2006-飞行员配对(二分图最大匹配)
ACM模版描述题解这个题的来源是网络流24题,貌似是一个十分不错的网络流习题集,暑假抽空做做吧!越学习,越发现自己是一个大大的菜鸡,心痛啊~~~我网络流都不会……这个题很明显是一个二分图的最大匹配问题(不要问我怎么看出来的),所以既可以用匈牙利算法解(代码 One),也可以使用构建网络流模型来解(代码 Two)。匈牙利的问题就不多说了,裸算法,(0级题都是裸算法模版题),而这里如果用网络流模型来解,原创 2017-06-21 03:55:53 · 1541 阅读 · 0 评论 -
51Nod-1581-摆放骨牌
ACM模版描述 题解之前做的覆盖问题,好像总是 dpdp,这次没想到竟然是二分图完美匹配是否唯一。我学姐的博客对这个题的解释很详细,我感觉凡是我学姐写过的题解,我就没有必要写了,因为我写的题解,任何人都能写出来,可是我学姐写的题解,那可真是精品,详细的令人发指,她不写,应该没有几个人愿意花那么多时间去写吧……>>>佐理慧的 blog<<<其实,简单的说,就是我们可以将国际象棋盘看做两个点集,分别是原创 2017-08-01 16:54:43 · 557 阅读 · 0 评论 -
HDU-2017"百度之星"程序设计大赛-初赛(B)-1005-度度熊的交易计划
ACM模版描述题解裸的费用流问题,直接拷模版就行了……可是我 6000ms6000ms 超时了,一直没有找到问题所在,今天又看了看代码,发现有一个地方少加了 ~ 导致进入了死循环,也就是当数据读到文件尾后它并不会停止而是继续执行,从而挂了……真是一个打死都想不到的 bugbug 所在,这种 bugbug 是最容易被自己忽视的了!不想说啥了,感觉自己好废啊……本来流就没有搞过几道题,这还出了这问题,原创 2017-08-14 16:00:36 · 652 阅读 · 0 评论 -
51Nod-1442-士兵的旅行
ACM模版描述题解典型的网络流问题,最大流,无向图,拆点建成有向图,判断是否满流即可。模版题……代码#include <queue>#include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long l原创 2017-09-04 21:38:14 · 442 阅读 · 1 评论 -
HDU-2017 ACM/ICPC Asia Regional Qingdao Online-1009-Smallest Minimum Cut
ACM模版描述题解原题,直接拷贝代码,改都不用改,就能 ACAC。代码#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long ll;const int MAXN = 10000;const ll INF = 1ll << 60;const int MOD = 100原创 2017-09-19 00:38:15 · 597 阅读 · 0 评论 -
欧拉路径
ACM模版欧拉回路每条边只经过一次,而且回到起点判断无向图:连通(不考虑度为0的点),每个顶点度数都为偶数。有向图:基图连通(把边当成无向边,同样不考虑度为0的点),每个顶点出度等于入度。混合图:既有无向边也有有向边,首先是基图连通(不考虑度为0的点),然后需要借助网络流判定。 首先给原图中的每条无向边随便指定一个方向(称为初始定向),将原图改为有向图G’,然后的任务就是改变G’中某些条边的原创 2016-06-11 02:49:24 · 3317 阅读 · 0 评论 -
HDU-3870-Catch the Theves
ACM模版描述 题解用最小割做是要死人的,看了周冬前辈中学时的论文,搞清楚了这种题要转化为最短路搞,不过建起图来是一个恶心人的事情~~~具体论文参见:浅析最大最小定理在信息学竞赛中的应用代码#include <iostream>#include <cstring>#include <vector>#include <queue>using namespace std;const int MA原创 2016-12-12 14:19:20 · 399 阅读 · 0 评论 -
HDU-3035-War
ACM模版描述 题解这是我做过建图最复杂的题,单看问题,感觉是最小割(最大流),但是点数数百万,根本搞不定啊,所以可以转化成最短路来做,提供一个比较好的相关知识的PPT——浅析最大最小定理在信息学竞赛中的应用……我也刚接触这个,明天进一步学习,要睡了,医生说,以后不能再熬夜了,不然……~/(ㄒoㄒ)/代码#include <cstdio>#include <queue>#include <cs原创 2016-12-11 23:24:12 · 434 阅读 · 0 评论 -
最大流
ACM模版Dinic算法HLPP算法SAP算法SAP+邻接矩阵_1SAP+邻接矩阵_2ISAP算法ISAP+邻接表ISAP+bfs 初始化+栈优化原创 2016-07-19 00:57:30 · 1422 阅读 · 2 评论 -
最小费用流
ACM模版O(V * E * f)/* * 最小费用流 O(V * E * f) * INIT: network g; g.build(v, e); * CALL: g.mincost(s, t); flow=g.flow; cost=g.cost; * 注意: SPFA增广, 实际复杂度远远小于O(V * E); */#define typef int原创 2016-07-19 20:16:14 · 3311 阅读 · 0 评论 -
有上下界的流
ACM模版有上下界的最小(最大)流/* * 有上下界的最小(最大)流 * INIT: up[][]为容量上界; low[][]为容量下界; * CALL: mf = limitflow(n,src,sink); flow[][]为流量分配; * 另附: 循环流问题 * 描述: 无源无汇的网络N,设N是具有基础有向图D=(V,A)的网络. * l和c分别为容量下界和原创 2016-07-19 21:23:21 · 1121 阅读 · 0 评论 -
最佳边割集
ACM模版最佳边割集#define MAXN 100#define inf 1000000000int max_flow(int n, int mat[][MAXN], int source, int sink){ int v[MAXN], c[MAXN], p[MAXN], ret = 0, i, j; for (;;) { for (i = 0; i原创 2016-07-20 00:41:50 · 1516 阅读 · 0 评论 -
最佳点割集
ACM模版最佳点割集#define MAXN 100#define inf 1000000000int max_flow(int n, int mat[][MAXN], int source, int sink){ int v[MAXN], c[MAXN], p[MAXN], ret = 0, i, j; for (;;) { for (i = 0; i原创 2016-07-20 01:26:17 · 1329 阅读 · 0 评论 -
最小边割集
ACM模版最小边割集#define MAXN 100#define inf 1000000000int max_flow(int n, int mat[][MAXN], int source, int sink){ int v[MAXN], c[MAXN], p[MAXN], ret = 0, i, j; for (;;) { for (i = 0; i原创 2016-07-20 03:33:49 · 2392 阅读 · 0 评论 -
最小点割集
ACM模版最小点割集/* * 最小点割集(点连通度) */#define MAXN 100#define inf 1000000000int max_flow(int n, int mat[][MAXN], int source, int sink){ int v[MAXN], c[MAXN], p[MAXN], ret = 0, i, j; for (; ;)原创 2016-07-20 03:54:16 · 1911 阅读 · 0 评论 -
最小覆盖问题
ACM模版最小路径覆盖最小路径覆盖O(n^3)路径覆盖:就是在图中找一些路经,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联。 最小路径覆盖:就是找出最少的路径条数,使之成为P的一个路径覆盖。 路径覆盖与二分图匹配的关系:最小路径覆盖=|P|-最大匹配数;其中最大匹配数的求法是把P中的每个顶点pi分成两个顶点pi’与pi”,如果在p中存在一条pi到pj的边,那么在二分图P’中就原创 2016-07-20 13:20:02 · 4535 阅读 · 0 评论 -
邻接表
ACM模版邻接表(网)图描述:结点带权值,边带权值,有向图,属于网结构。using namespace std;// 边点结构typedef struct Edge{ int tag; int weigh; struct Edge *next;}Edge;// 表结构typedef struct Table{ int data; Edge *fi原创 2016-06-24 04:22:54 · 943 阅读 · 0 评论 -
计蒜客-2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛-J-Our Journey of Dalian Ends
ACM模版题解我不喜欢计蒜客,我都等了两天了,还没有地方可以提交……现在连题目都看不了,算了,题解就不写了,光发一下代码吧……代码#include <iostream>#include <queue>#include <vector>#include <cstring>#include <algorithm>#include <map>using namespace std;typedef原创 2017-09-11 14:19:47 · 380 阅读 · 0 评论