acm_图论
文章平均质量分 71
小七和小墨
http://blog.csdn.net/ccsu_cherish
http://blog.csdn.net/shahdza/article/details/6632538
展开
-
hdu2489 Minimal Ratio Tree dfs+最小生成树
题目大意是Ratio的计算方法是边的权值除以节点的权值。由此计算带有点权值和边权值的图n,计算出一个子图m,子图m的Ratio在所有m个顶点的树中是最小的。那么对于同一m个节点的子图中,其节点的权值是相同的,只需我们找出m个节点的最小的边权值和,即最小生成树Prim。首先将n个节点进行dfs搜索,达到m个节点的时候进行最小生成树的计算。在计算Ratio的时候要进行精度的判断,不然就是wro原创 2013-08-04 14:22:57 · 547 阅读 · 0 评论 -
poj3422 Kaka's Matrix Travels 最大费用流 (拆点)
题意:给你一个n*n(1题解:将每个格子看成一个点A,然后把这个点A拆成两个点A和A'。如果点B在点A的右侧或下侧,那么点A'就与点B连一条费用为0,容量为无穷大的边。对于每两个点A和A',点A向点A'连一条费用为点A这个格子的值、容量为1的边和一条费用为0,容量为无穷大的边。再建立一个源点S。S与点C(1,1)连一条费用为0,容量为K的边,汇点定为点D'(n,n).然后可以求从点S到点D'(原创 2013-08-15 12:13:36 · 527 阅读 · 0 评论 -
hdu2063 过山车 二分图最大匹配 匈牙利算法
题解:利用dfs或者bfs不停找到增广路,然后用一个link[]数组记录匹配。如果link[i]没有在原匹配中,就更新匹配并加入其中,当此次增广路完成并更新完匹配,最大匹配值ans加1。#include#include#include#include#include#include#include#includeusing namespace std;int v1,v2,an原创 2013-08-16 17:19:53 · 471 阅读 · 0 评论 -
hdu4619 Warm up 2 二分匹配 匈牙利算法(再一发)
题意: 有n张横牌,m张竖牌。横牌肯定不相交,竖牌肯定不相交。问 最大的不相交的集合。 题解:先把所有的点中相交的点记录在vector#include#include#include#include#include#include#include#includeusing namespace std;struct node{ int x,y;};node p1原创 2013-08-16 22:20:36 · 499 阅读 · 0 评论 -
hdu1269 迷宫城堡 强连通分量 tarjan算法(前向星实现)
为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N题解:求图的强连通分量,如果图的强连通分量大于1,那么说明图中的ij不是互达的,输出NO。根据题目房间数据我们用前向星建图,前向星是一种边集数组,并对边集数组按u点(前一个端点)升序排序,使得由同一个点出发的边都集中在一起了。再加上辅助数组 f[MAXN](模拟表头),存 结点i 出发的第一个边在边集数组里的位置。原创 2013-08-18 17:41:22 · 812 阅读 · 0 评论 -
hdu4707 Pet 2013 ACM/ICPC Asia Regional Online —— Warmup
One day, Lin Ji wake up in the morning and found that his pethamster escaped. He searched in the room but didn’t find the hamster. He tried to use some cheese to trap the hamster. He put the cheese tr原创 2013-09-08 17:14:11 · 926 阅读 · 2 评论 -
NYOJ239 月老的难题 二分图最大匹配(前向星)
题意:月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘。现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭。现在已知哪些男孩与哪些女孩如果结婚的话,可以结成幸福的家庭,月老准备促成尽可能多的幸福家庭,请你帮他找出最多可能促成的幸福家庭数量吧。假设男孩们分别编号为1~n,女孩们也分别编号为1~n。题解:根据描述可以看出这是个求原创 2013-09-07 17:35:15 · 581 阅读 · 0 评论 -
poj3041 Asteroids 二分图最小点集覆盖
Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 500). The grid contains K asteroids (1 <= K <= 10,000), which are conveniently loca原创 2013-09-08 16:45:30 · 516 阅读 · 0 评论 -
NYOJ323 Drainage Ditches 最大流
Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to regrow. Thus,原创 2013-09-11 11:01:01 · 459 阅读 · 0 评论 -
NYOJ 127 星际之门(一) N阶完全图的生成树数量
题解:ayley公式是说,一个完全图K_n有n^(n-2)棵生成树,换句话说n个节点的带标号的无根树有n^(n-2)个。那么此题就容易解了。证明见链接:http://blog.himdd.com/archives/979#include#include#include#includeusing namespace std;int main(){ int T,n,s;原创 2013-09-04 11:23:18 · 2430 阅读 · 0 评论 -
网络流基础篇——Edmond-Karp算法
BY纳米黑客 这是我的一个初学者教程系列的一部分,也是这个系列的第一篇文章,这个系列计划中将包括网络流,线段树,树状数组等一些初学者比较难以入门的内容。 因为是初学教程,所以我会尽量避免繁杂的数学公式和证明。也尽量给出了较为完整的代码。 本文的目标群体是网络流的初学者,尤其是看了各种NB的教程也没看懂怎么求最大流的小盆友们。本文的目的是,解释基本的网络流模型,最基础的最大流求法,即bf转载 2013-12-29 19:36:00 · 1358 阅读 · 0 评论 -
hdu1150 Machine Schedule 最小点覆盖
As we all know, machine scheduling is a very classical problem in computer science and has been studied for a very long history. Scheduling problems differ widely in the nature of the constraints that原创 2013-12-29 20:48:41 · 565 阅读 · 0 评论 -
hdu1068 Girls and Boys 最大独立集
the second year of the university somebody started a study on the romantic relations between the students. The relation “romantically involved” is defined between one girl and one boy. For the study r原创 2013-12-30 13:36:11 · 716 阅读 · 0 评论 -
hdu 2586How far away ? 最近公共祖先LCA离线算法
There are n houses in the village and some bidirectional roads connecting them. Every day peole always like to ask like this "How far is it if I want to go from house A to house B"? Usually it hard原创 2014-03-05 15:16:08 · 594 阅读 · 0 评论 -
poj图论题目
POJ 2449 Remmarguts' Date(中等) AChttp://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意:经典问题:K短路解法:dijkstra+A*(rec),方法很多相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144该题亦放在搜索推荐转载 2013-08-15 12:31:54 · 18716 阅读 · 1 评论 -
poj1149 PIGS 网络最大流Dinic
题意:mike在养猪场工作,里面有M个猪圈,每个猪圈都上了锁。mike没有钥匙所以不能打开任何一个猪圈。要买猪的顾客一个接一个来到养猪场,每个顾客有一个猪圈的钥匙,而且他们要买一定数量的猪。有些信息mike是要知道的:顾客所拥有的钥匙,要购买的数量。求mike一天卖出去的最大数量。比如:3 33 1 10 2 1 2 22 1 3 31 2 6表示3个猪圈,3个顾客。第二行原创 2013-08-14 13:31:44 · 652 阅读 · 0 评论 -
最长上升子序列两种算法o(n^2),o(nlogn)
DP_1:我们依次遍历整个序列,每一次求出从第一个数到当前这个数的最长上升子序列,直至遍历到最后一个数字为止,然后再取dp数组里最大的那个即为整个序列的最长上升子序列。我们用dp[i]来存放序列1-i的最长上升子序列的长度,那么dp[i]=max(dp[j])+1,(j∈[1, i-1]); 显然dp[1]=1,我们从i=2开始遍历后面的元素即可DP_2:维护一个一维数组c,并且这个数组是动态原创 2013-08-13 14:33:06 · 550 阅读 · 0 评论 -
hdu1102 Constructing Roads 最小生成树Prim
题目大意是有N个村庄,现在要去建设一些街道,要求两两村庄之间都互通,并且街道的总长度最小。Prim可以保证无向图中每两个顶点都可以互通,并且使用了最少的边数。 Prim的要点就是找到当前最小距离的顶点并更新与当前点相关的其他节点的值是否比原来到生成树的距离小。小则更新。#include#include#include#include#include#include#includ原创 2013-08-03 16:39:19 · 510 阅读 · 0 评论 -
poj1797 Heavy Transportation kruskal+并查集
题目大意是找到1到n的所有路径中权值最小边的最大值。最小生成树kruskal并对并查集用启发式优化(按秩合并)。#include#include#include#include#include#include#includeusing namespace std;struct node{ int u; int v; int w;};node e[原创 2013-08-05 16:57:26 · 525 阅读 · 0 评论 -
hdu3790 最短路径问题 dijstra
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。直接用dijstra。要在输入的时候进行判断,如果输入的长度d大于目前的a[x][y],不要把它读入进去。这样保证求出来的路径是最短的。#include#include#include#include#include#include原创 2013-08-06 10:42:20 · 604 阅读 · 0 评论 -
poj3259 Wormholes 最短路bellman
题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts。我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前的自己。思路:bellman_ford。由于存在负权边,Dijkstra便不能用了。题目就是看图中有没有负权环。#include#include#include#include原创 2013-08-06 19:06:23 · 466 阅读 · 0 评论 -
hdu2767 Proving Equivalences 强连通(缩点染色)
题意:在有n个节点的有向图中有m条边,要求的是最少需要增加多少条边使得原图构成一个强连通图。题解:首先了解一下缩点的意思:无向图的缩点是指将无向图中没有割边的子图缩成一个点。这样缩点之后图就会变成一棵树,树上的边必定是一条桥。此外,如果这样缩点,那么一个节点只能在其中的一个“块”内。这个道理很明显,一个桥若断开,就把图分成不连通的两部分。一个点不可能同时在这两个部分中。有向图的缩点也就是把原创 2013-08-20 10:31:12 · 563 阅读 · 0 评论 -
zoj2770 Burn the Linked Camp 差分约束和最短路bellman
题意:三国时期,蜀国刘备被吴国大都督陆逊打败了。刘备失败的原因是因为刘备的错误决策。他把部队分成几十个大营,每个大营驻扎一队部队,又用树木编成栅栏,把大营连成一片,称为连营。让我们回到那个时代。陆逊派了很多密探,获得了他的敌人-刘备的信息。通过密探,他知道刘备的部队已经分成几十个大营,这些大营连成一片(一字排开),这些大营从左到右用1...n编号。第i个大营最多能容纳Ci个士兵。而且通过观察刘原创 2013-08-08 10:54:16 · 939 阅读 · 2 评论 -
NYoj38 布线问题 最小生成树Prim
它就是一个最小生成树的题目,也没有什么需要特殊处理的地方了- -#include#include#include#include#includeusing namespace std;#define INF 200000int a[501][501];int dist[501];int n,m,ans;int b[501];void prim(){ int vi原创 2013-08-20 17:55:12 · 595 阅读 · 0 评论 -
poj1523 SPF 双连通求割点
题意:一个无向图,要找出这个图的割点,判断每个割点去掉之后可以形成多少个双连通分量。#include#include#include#include#includeusing namespace std;#define maxn 1005#define min(a,b) (a)<(b) ? a:b#define man(a,b) (a)>(b) ? a:bstruct nod原创 2013-08-21 11:12:09 · 496 阅读 · 0 评论 -
NYOJ42 一笔画问题 欧拉回路判定+前向星
利用前向星构图,然后先将图用DFS搜索一遍,如果发现有点没有搜索到,那么说明图是不能一笔画的,如果所有的点都已经搜索到了,那么就需要判定:如果有点的度是一个奇数,那么回路中的奇数度JDnum加1,所有的点搜完以后,如果JDnum==2或者JDnum==0,那么可以构成欧拉回路,否则不能。#include#include#include#include#include#define m原创 2013-08-21 15:09:53 · 752 阅读 · 0 评论 -
hdu1142 A Walk Through the Forest 最短路和记忆式搜索dijstra+dfs
题目大意:说的是某某从公司回家希望尽可能的走最短的路程。并且原创 2013-08-09 18:19:48 · 692 阅读 · 0 评论 -
NYOJ118 修路方案 次小生成树Prim
题解:次小生成树:步骤是prim算法求最小生成树的同时求出任意两点线路上的权值。Prim求次小生成树:先用Prim算法求出最小生成树,并把树上的边做标记。我们考虑,如果插入一条不在树上的边,则会生成一个环,要构造次小生成树则必须删除一条边。为了使生成树的和最小,肯定要选择边权最大的一条边来删除。max[][]表示,计算方法用到了动态规划,而且需要记录每个节点的父节点,用fa原创 2013-08-22 16:58:33 · 924 阅读 · 0 评论 -
poj1273 Drainage Ditches 最大流EK
题目是要求一个最大流,给出的数据是容量C。1是源点,m是汇点。用朴素的EK算法,不断寻求增广路,如果找到了汇点就从汇点开始,正向弧加上一个增广路的最小值,反向弧减去增光路的最小值,当没有找到汇点的时候退出。#include#include#include#include#include#include#includeusing namespace std;#define MIN原创 2013-08-11 23:22:14 · 446 阅读 · 0 评论 -
NYOJ120 校园网络 强连通缩点
南阳理工学院共有M个系,分别编号1~M,其中各个系之间达成有一定的协议,如果某系有新软件可用时,该系将允许一些其它的系复制并使用该软件。但该允许关系是单向的,即:A系允许B系使用A的软件时,B未必一定允许A使用B的软件。现在,请你写一个程序,根据各个系之间达成的协议情况,计算出最少需要添加多少个两系之间的这种允许关系,才能使任何一个系有软件使用的时候,其它所有系也都有软件可用。题解:看题意原创 2013-08-23 11:29:02 · 886 阅读 · 0 评论 -
poj3084 Panic Room 最小割最大流Dinic
题意:有一些建在一起的房间,相互之间通过门相连,一个门的控制开关在它连接的两个房间的其中一个里面,在有开关的房间可以任意进入没开关的另一侧房间,而在另一侧要进入有开关的房间则需要门是开着的。现在有的房间中有入侵者,同时有一个房间n需要保护,问要保护那个房间不被入侵,最少要关上几道门。如果没法实现,则输出“PANIC ROOM BREACH”。比如“I3 0 4 5”,则表示有入侵者,这间房有0,4原创 2013-08-12 17:27:18 · 711 阅读 · 0 评论 -
hdu3061 Battle 最大流最小割
由于小白同学近期习武十分刻苦,很快被晋升为天策军的统帅。而他上任的第一天,就面对了一场极其困难的战斗:据侦查兵回报,前方共有N座城池,考虑到地势原因,最终得到一个结论:攻占某些城池之前必须攻占另外一些城池。事实上,可以把地图看做是一张拓扑图,而攻占某个城池,就意味着必须先攻占它的所有前驱结点。小白还做了一份调查,得到了攻占每个城池会对他的兵力产生多少消耗(当然也可能会得到增长,因为每攻原创 2014-03-15 15:13:06 · 543 阅读 · 0 评论