ACM-图论与网络流
yew1eb
https://github.com/yew1eb
展开
-
poj 1459 Power Network, 最大流,多源多汇
点击打开链接 多源多汇最大流,虚拟一个源点s'和一个汇点t',原来的源点、汇点向它们连边。#include#include#include#include#include#includeusing namespace std;const int maxn = 500 + 5;const int INF = 100000000;struct Ed原创 2014-08-01 21:12:17 · 2220 阅读 · 0 评论 -
[HAOI2005]路由选择问题,次短路
【问题描述】 X城有一个含有N个节点的通信网络,在通信中,我们往往关心信息从一个节点I传输到节点J的最短路径。遗憾的是,由于种种原因,线路中总有一些节点会出故障,因此在传输中要避开故障节点。任务一:在己知故障节点的情况下,求避开这些故障节点,从节点I到节点J的最短路径S0。任务二:在不考虑故障节点的情况下,求从节点I到节点J的最短路径S1、第二最短路径S2。【输入文件原创 2014-09-17 11:18:58 · 2045 阅读 · 0 评论 -
poj 3692 Kindergarten,二分图的最大团
最大独立集 = V - 最小顶点覆盖二分图的最小顶点覆盖数 = 最大匹配数最大团 = 补图的最大独立集#include #include #include #include #include #include using namespace std;const int maxn = 200 + 10;int n, m, s;int map[max原创 2014-09-11 11:15:45 · 1777 阅读 · 0 评论 -
poj1419 Graph Coloring,无向图,最大独立集
最大独立集 = 补图的最大团最小顶点覆盖 + 最大独立集 = V#include #include const int maxn =100 + 10;int g[maxn][maxn], dp[maxn], n;int x[maxn], ans[maxn], mx;int dfs(int *adj, int ns, int dep) { int t[maxn];原创 2014-09-11 10:49:39 · 2226 阅读 · 0 评论 -
hdu1530 Maximum Clique,最大团 , DP,邻接矩阵
Given a graph G(V, E), a clique is a sub-graph g(v, e), so that for all vertex pairs v1, v2 in v, there exists an edge (v1, v2) in e. Maximum clique is the clique that has maximum number of vertex.原创 2014-09-11 08:41:21 · 2142 阅读 · 0 评论 -
hdu1269 迷宫城堡,有向图的强连通分量 , Tarjan算法
hdu1269 迷宫城堡验证给出的有向图是不是强连通图。。。Tarjan算法板子题Tarjan算法的基础是DFS,对于每个节点、每条边都搜索一次,时间复杂度为O(V+E)。算法步骤:1、搜索到某一个点时,将该点的Low值标上时间戳,然后将自己作为所在强连通分量的根节点(就是赋值Dfn=Low=time)2、将该点压入栈。3、当点p有与点p’相连时原创 2014-08-03 21:45:20 · 1764 阅读 · 0 评论 -
hdu3844 Mining Your Own Business,无向图的双连通分量
点击打开链接无向图的双连通分量#include#include#include#include#include#include#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;typedef long long LL;const int maxn = 50010;原创 2014-09-19 11:33:29 · 1743 阅读 · 0 评论 -
hdu2767 Proving Equivalences,有向图强联通,Kosaraju算法
点击打开链接有向图强联通,Kosaraju算法缩点后分别入度和出度为0的点的个数 answer = max(a, b);scc_cnt = 1; answer = 0#include#include#include#include#includeusing namespace std;const int maxn = 20000 + 1原创 2014-09-19 13:53:44 · 1652 阅读 · 0 评论 -
01. 搭配飞行员 [网络流24题]
提交地址:http://cojs.tk/cogs/problem/problem.php?pid=14分析:二分图的最大匹配,网络最大流。思路: 采用最大流算法。 增加源点和汇点。 1、S向X集合中每个顶点连一条容量为1的有向边。2、Y集合中每个顶点向T连一条容量为1的有向边。3、XY集合之间的边都设为从A集合中的点到B集合之中的点,容量为1的有向边。建好图原创 2013-08-14 11:25:04 · 1875 阅读 · 0 评论 -
POJ 1273 || HDU 1532 Drainage Ditches ,最大流入门题
Drainage DitchesHal BurchTime Limit 1000 msMemory Limit 65536 kbdescriptionEvery time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the cl原创 2013-08-09 10:00:08 · 1822 阅读 · 0 评论 -
USCAO4.2 The Perfect Stall ,二分图最大匹配
题目地址:http://acm.nefu.edu.cn/JudgeOnline/problem/474.jsp题意:给你n 头牛,和m 个墙,每头牛有自己喜欢的墙,要求每堵墙只能有一头牛,求最多的匹配数。分析:二分图的最大匹配sample_input5 52 2 53 2 3 42 1 53 1 2 51 2sample_output4如下构成二原创 2013-08-16 11:23:55 · 1741 阅读 · 0 评论 -
网络流习题集
变形很多,最小割最大流定理的理解是关键POJ 1149 - PIGS(较难)http://acm.pku.edu.cn/JudgeOnline/problem?id=1149绝对经典的构图题POJ 1273 - Drainage Ditches(基础)http://acm.pku.edu.cn/JudgeOnline/problem?id=1273最大流入门PO原创 2014-04-23 10:18:16 · 2470 阅读 · 0 评论 -
poj3281-Dining ,最大流,建图
点击打开链接分析:求最大流建图:拆点 牛拆成左边与食物相连的左牛 和 右边与饮料相连的右牛 1、s->食物 连边2、食物->左牛3、左牛->右牛4、右牛->饮料5、饮料->t边的方向为 s->食物->左牛->右牛->饮料->t#include #include #include #include #include using n原创 2014-07-12 10:27:40 · 1917 阅读 · 0 评论 -
poj 3268 Silver Cow Party , spfa , dijkstra
点击打开链接两次求最短路(第二次把边反向求)1、spfa//poj 3268 Silver Cow Party//SPFA#include #include #include using namespace std;const int M = 100000 + 100;const int N = 1000 + 100;const int inf = 1原创 2014-06-07 14:16:14 · 1683 阅读 · 0 评论 -
poj 2139 Six Degrees of Cowvin Bacon , floyd
点击打开链接题意:给定牛的关系图,求其中一头牛与其他牛关系路程之和sum最小,然后输出 sum*100/(n-1)floyd求任意两点间的最短路程注意: inf不能太大,因为 f[i][k] + f[k][j] 做加法时可能会溢出!#include #include const int maxn = 300 + 5;const int inf = 1<<29;int原创 2014-06-07 13:25:23 · 2352 阅读 · 1 评论 -
hdu1068 Girls and Boys,二分图最大独立集
点击打开链接二分图最大独立集 = 顶点数 - 最大匹配数#include #include #include #include #include using namespace std;const int maxn = 1005;int g[maxn][maxn];int n;int link[maxn];bool used[maxn];bool dfs(i原创 2014-09-18 10:39:28 · 1645 阅读 · 0 评论 -
poj1236 Network of Schools ,有向图求强连通分量(Tarjan算法),缩点
题目链接: 点击打开链接题意: 给定一个有向图,求:1) 至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点2) 至少要加多少条边,才能使得从任何一个顶点出发,都能到达全部顶点 顶点数求完强连通分量后,缩点,计算每个点的入度,出度。 第一问的答案就是入度为零的点的个数, 第二问就是max(n,m) // 入度为零的个数为n, 出度为原创 2014-08-04 14:31:18 · 2381 阅读 · 0 评论 -
poj3436 ACM Computer Factory, 最大流,输出路径
POJ 3436 ACM Computer Factory电脑公司生产电脑有N个机器,每个机器单位时间产量为Qi。电脑由P个部件组成,每个机器工作时只能把有某些部件的半成品电脑(或什么都没有的空电脑)变成有另一些部件的半成品电脑或完整电脑(也可能移除某些部件)。求电脑公司的单位时间最大产量,以及哪些机器有协作关系,即一台机器把它的产品交给哪些机器加工。Sample原创 2014-07-31 21:25:43 · 2173 阅读 · 0 评论 -
ACdream-1171 Matrix sum, 最大费用最大流
Matrix sumTime Limit: 8000/4000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others)SubmitStatisticNext ProblemProblem Descriptionsweet和zero在玩矩阵游戏,sweet画了一个N * M的矩阵,矩阵的每个格子有一个整数原创 2014-08-03 20:40:45 · 1821 阅读 · 0 评论 -
spoj1476 maximum profit,最大权闭合子图
http://www.spoj.com/problems/PROFIT/最大权闭合子图:点权之和最大的闭合图。建图:每一条有向边变为容量为inf,源S到正权点v(wv>0)的边容量wv,负权点v(wv0)到汇T的边容量−wv,零权点v(wv=0)不与源和汇相连。然后求最小割(SUM-最大流)即为答案。/* * Author: yew1eb * Created原创 2014-10-31 21:49:02 · 1976 阅读 · 0 评论 -
hdu2255 奔小康赚大钱,最大权匹配,KM算法
点击打开链接最大权匹配KM算法算法步骤:设顶点Xi的顶标为a[i],顶点Yi的顶标为b[i]ⅰ.初始时,a[i]为与Xi相关联的边的最大权值,b[j]=0,保证a[i]+b[j]>=w(i,j)成立ⅱ.当相等子图中不包含完备匹配时,就适当修改顶标以扩大相等子图,直到找到完备匹配为止ⅲ.修改顶标的方法原创 2014-10-02 09:48:16 · 2148 阅读 · 0 评论 -
Ural 1076 Trash (二分图最佳完美匹配)
http://acm.timus.ru/problem.aspx?space=1&num=1076 你受聘于当地的垃圾处理公司任CEO,你的一项工作是处理引进的垃圾,以及分类垃圾以进行循环利用。每天,垃圾会有几个集装箱运来,每一个集装箱都包含几种垃圾。给定集装箱里垃圾的数目n,请找出最佳的途径去分类这些垃圾。分类垃圾即把每种垃圾分开装到不同的集装箱中。每个集装箱的容量都是无限原创 2014-08-19 11:05:37 · 1703 阅读 · 0 评论 -
POJ 3020 Antenna Placement ,二分图的最小路径覆盖
题目大意:一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线?无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联;#in原创 2014-08-01 22:09:49 · 1675 阅读 · 0 评论 -
poj3041-Asteroids , 二分图的最小顶点覆盖数 = 最大匹配数
点击打开链接二分图的最小顶点覆盖数 = 二分图的最大匹配数题意: 在N*N的网络中有K颗小行星。小行星i的位置是(Ri, Ci)。现在有一个强力的武器能够用一发光束将一整行或一整列的小行星消灭。想要利用这个武器消灭所有的小行星最少需要几发光束?分析: 以小行星的左右坐标建立二分图,就可以看出是求二分图的最小顶点覆盖数。#include #include #inc原创 2014-07-12 00:17:35 · 2758 阅读 · 0 评论 -
UVa11183 Teen Girl Squad, 最小树形图,朱刘算法
Teen Girl Squad Input: Standard InputOutput: Standard OutputYou are part of a group of n teenage girls armed with cellphones. You have some news you want to tell everyone in the group. The p原创 2014-10-01 19:29:20 · 2173 阅读 · 0 评论 -
SPOJ104 Highways,生成树计数
高速公路(SPOJ104 Highways) 一个有n座城市的组成国家,城市1至n编号,其中一些城市之间可以修建高速公路。现在,需要有选择的修建一些高速公路,从而组成一个交通网络。你的任务是计算有多少种方案,使得任意两座城市之间恰好只有一条路径? 数据规模:1≤n≤12。 生成树计数算法步骤:1、 构建拉普拉斯矩阵 Matrix[i][j原创 2014-09-28 20:28:16 · 2418 阅读 · 0 评论 -
poj2395 Out of Hay , 求MST的最长边
点击打开链接求MST的最长边~prim#include #include #include #include #define Min(a,b) (a)<(b)?(a):(b)using namespace std;const int INF = 1000000000;const int maxn = 2000 + 5;struct pto{原创 2014-06-08 16:30:40 · 1770 阅读 · 1 评论 -
poj 2112 Optimal Milking, 二分,最短路,最大流
#include#include#include#include#includeusing namespace std;const int maxn = 500 + 5;const int INF = 100000000;struct Edge{ int from, to, cap, flow;};struct Dinic{ int n, m, s, t;原创 2014-08-02 16:59:11 · 1562 阅读 · 0 评论 -
poj1637 Sightseeing tour,混合图的欧拉回路问题,最大流解
混合图的欧拉回路问题题目地址欧拉回路问题1 定义欧拉通路 (Euler tour)——通过图中每条边一次且仅一次,并且过每一顶点的通路。 欧拉回路 (Euler circuit)——通过图中每条边一次且仅一次,并且过每一顶点的回路。 欧拉图——存在欧拉回路的图。 2 无向图是否具有欧拉通路或回路的判定 G有欧拉通路的充分必要条件为:G 连通,原创 2014-08-03 17:30:54 · 1815 阅读 · 0 评论 -
POJ 1149 PIGS ,最大流
大意:有M个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了N个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。问总共最多能卖出多少头猪。(1 构造这个网络模型的规则: • 每个顾客分别用一个结点来表示。 • 对原创 2014-09-06 02:42:11 · 1949 阅读 · 0 评论 -
poj2449 Remmarguts' Date,第K短路
点击打开链接SPFA + A*#include #include #include #include using namespace std;struct node { int v, dis, f, next; friend bool operator <(node a, node b){ return a.f>b.f; }};const in原创 2014-09-16 23:12:44 · 1857 阅读 · 0 评论 -
poj1502 MPI Maelstrom,单源最短路的最长距离,dijkstra + 优先队列
点击打开链接求顶点1到其他点的最短距离的最长距离。。测试。。dijkstra + 优先队列#include #include #include #include #include #include #include #include #include #include #include #define for0(a,b) for原创 2014-09-26 14:53:21 · 1980 阅读 · 0 评论 -
hdu1814 Peaceful Commission,2-sat
题目大意:一国有n个党派,每个党派在议会中都有2个代表,现要组建和平委员会,要从每个党派在议会的代表中选出1人,一共n人组成和平委员会。已知有一些代表之间存在仇恨,也就是说他们不能同时被选为和平委员会的成员,现要你判断满足要求的和平委员会能否创立?如果能,请任意给出一种方案。2-sat问题#include #include #include #include #原创 2014-09-19 16:17:11 · 1962 阅读 · 0 评论 -
2-sat问题
序言 最近花了一点心思研究2-sat模型,看了很多论文博客等等,也在POJ上做了一点题。其实这个东西也还挺好玩的,当然,前提是每道题你都有认真分析,认真想清楚模型的意义,搞明白为什么可以这样,而不是简单的知道怎样做,就套上一个模板了事,那样,是不是也太糟蹋这门科学了。 关于2-sat,基本上所有人都会推荐两个资料: 伍昱 由对称性解转载 2014-09-19 16:18:42 · 1707 阅读 · 0 评论 -
poj1041 John's trip,无向图求欧拉回路路径
点击打开链接无向图求欧拉回路:1、图连通2、所有顶点的度数位偶数#include #include #include #include #include using namespace std;const int mt = 2000;const int ms = 50;bool vis[mt+5];int g[ms][mt+5];原创 2014-09-15 19:52:29 · 1981 阅读 · 0 评论 -
UVa10054 The Necklace,无向图求欧拉回路
无向图求欧拉回路:1、图连通 2、所有顶点的度数位偶数随便从一个点开始递归遍历即可求出路径#include #include #include using namespace std;const int maxcolor = 50;int n, G[maxcolor+1][maxcolor+1], deg[maxcolor+1];str原创 2014-09-15 19:50:11 · 1729 阅读 · 0 评论 -
UVA11324 The Largest Clique,有向图,最大团的结点数
点击打开链接有向图把强联通分量缩点后得到一个DAG,然后DP。#include #include #include #include #include #include using namespace std;const int maxn = 1000 + 10;vector G[maxn];int dfn[maxn], low[maxn], sccno原创 2014-09-11 10:31:35 · 2209 阅读 · 0 评论 -
POJ1144 Network(求割点)
http://poj.org/problem?id=1144裸的求割点。u是割点的条件:u是根且有大于一个的儿子,或者u不是根,且u有一个儿子v使得low[v]>=dfn[u]。code:#include #include const int maxn = 100 + 5;int edge[maxn][maxn];int bridge[maxn][原创 2013-09-27 19:02:52 · 1914 阅读 · 0 评论 -
POJ2186 Popular Cows ,有向图, Tarjan算法
题意:给定一个有向图,求有多少个顶点是由任何顶点出发都可达的。顶点数定理:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达(由于无环,所以从任何点出发往前走,必然终止于一个出度为0的点)1. 求出所有强连通分量2. 每个强连通分量缩成一点,则形成一个有向无环图DAG。3. DAG上面如果有唯一的出度为0的点,则该点能被所有的点可达。那么该原创 2014-09-15 21:08:32 · 1746 阅读 · 0 评论 -
poj2942 Knights of the Round Table,无向图点双联通,二分图判定
点击打开链接无向图点双联通,二分图判定#include #include #include #include #include using namespace std;struct Edge{ int u, v;};const int maxn = 1005;int pre[maxn], iscut[maxn], bccno[maxn],dfs_c原创 2014-09-19 11:13:11 · 1805 阅读 · 0 评论