ACM_图论
文章平均质量分 83
frog1902
Never say never
展开
-
SOJ 3254: Rain and Fgj
裸的最小割,拆点之后将求最小割点转化为求最小割边。题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=3254题意:一个连通图中,每个点有自己的权值。求为了使点0和点n-1不连通所需要去掉的点的权值最小值,点0是不能被去掉的。算法:把每个点i拆成两个点,i+1和n+i+1,然后建边(i+n+1,i+1)原创 2012-12-09 16:09:06 · 725 阅读 · 0 评论 -
POJ 3352: Road Construction
题目链接:http://poj.org/problem?id=2186题目大意:问至少加多少边,可以使得图变成双联通的。算法:双联通模板题。比较特殊的是有重边。那么在访问每条边的时候看一下它的反向边是否被访问即可。求完双联通并缩点之后,统计出树中度为1的节点的个数,即为叶节点的个数。每次在两个相隔最远的点直接连一条边即可。代码如下:原创 2013-07-27 23:22:17 · 993 阅读 · 0 评论 -
POJ 2186: Popular Cows
题目链接:http://poj.org/problem?id=2186题意:有一群绵羊,现在有一些喜欢关系,喜欢关系是可以传递的。问有多少绵羊直接或间接地被所有绵羊喜欢。算法:首先求强联通并缩点,方法见BYVoid的《有向图强连通分量的Tarjan算法》。缩点之后形成了一个DAG。现在来看一下有几个出度为0的块。如果没有出度为0的块,必然无解原创 2013-07-27 23:13:17 · 954 阅读 · 0 评论 -
SCU 1187: Closest Common Ancestors
题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=1187题目大意:LCA模板题算法:我写LCA从来都是用倍增,倍增是在线的,但是传说比离线的tarjan慢1/3。倍增依据的思想是ST算法,附一段网上的介绍:dp[i][j]表示区间[i,i+2^j-1]的最小值,则dp[i][0]=a[i]dp[原创 2013-07-27 20:08:57 · 1158 阅读 · 0 评论 -
HDOJ 3760: Ideal Path
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3760题目大意:边权全部为1的图上,每条边上有一个字母,求字典序最小的最短路算法:预处理出起点和终点到每个点的最短距离。如果某点到起点和终点的距离和等于最短路的长度,那么它就有可能是最短路上的点。这样就方便的把图划分了层次,在这个层次图上,实质上边权就等同于点原创 2013-07-27 23:49:26 · 1137 阅读 · 0 评论 -
ZOJ 3717: Balloon
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3717题意:有N组气球,每组有一个蓝气球以及一个红气球可供选择,它们各自有自己的圆心坐标。在每组中选择一个气球吹起来,要求把所有的气球吹到一样大,气球和气球之间不能重叠。问最多可以吹多大。算法:典型的二分求值+2-SAT判定o(n原创 2013-06-30 15:14:03 · 1448 阅读 · 5 评论 -
SPOJ MSTS: Count Minimum Spanning Trees
题目链接:http://www.spoj.com/problems/MSTS/题目大意:最小生成树计数算法:首先要明白一个性质:所有最小生成树的权值为ci的边的数量ni和所连接的点集S是一样。由此可以计算每种权值的边拿出ni个构成S的最小生成树的数量。那么我们把权值相同的边看成一组,我们先从小到大的求每个组的联通块中生成树的数量。然后把每个组内的原创 2013-07-27 20:39:33 · 2363 阅读 · 0 评论 -
HDOJ 4612: Warm up
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4616题目大意:给你一个无向图,问加上一条边之后,最少含有多少桥边。算法:加一条边的实质就是,在图上新增了一个环,并且把这个环上的所有点收缩到一个双联通分量里。也就是说,原来在环上的桥边,加边之后都不再是桥边。那么,我们先用双联通缩点,在缩点后的到的桥中找最长原创 2013-07-29 18:14:40 · 1067 阅读 · 0 评论 -
HDOJ 4650: Minimum Average Weight Path
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4650题目大意:给定一个无重边的有向图,求全源最小平均权值路径。最小平均权值路径的定义是,路径总权值 / 路径上的边数最小。算法:题目应当分为两种情况:两点间的路径上可能存在负环,如果一条路径沿着这个负环不断走下去,那么最终的平均值一定是趋于这个负环的平均权值原创 2013-08-06 22:50:08 · 1132 阅读 · 0 评论 -
HDOJ 3594: Cactus
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3594题目大意:仙人掌图的判定。仙人掌图是一种强连通图,使得每条边至多在一个环上。算法:仙人掌算是一种蛮流行的图论模型吧。wiki上Cactus Graph的定义是:一个无向连通图,任两个简单环至多含有一个公共点,等价于任一条边至多属于一个简单环,等价于任原创 2013-08-19 13:18:14 · 1429 阅读 · 2 评论 -
HDOJ 4621: Life Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4621题目大意:有一个n*m的网格,可以把它染成黑色或白色。如果某个格子被染成黑色,它可以获得一定的权值b[i],如果某个格子被染成白色,它也可以获得一定的权值w[i]。另有若干要求,要求的形式是,指定一种颜色,如果某子矩阵都被染成这种颜色,则可以获得一定的额外奖励。求最大获原创 2013-08-10 10:26:25 · 1595 阅读 · 0 评论 -
HDOJ 4081: Qin Shi Huang's National Road System
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4081题目大意:求一个图的生成树,可以指定一条边为“魔法边”,使其边权变为0。在此基础上,要求 “ '魔法边' 连接的两点的点权 / 生成树上其它边的边权" 最大。算法:首先,一定是在最小生成树上去掉一条边,然后在被分成的两部分间加上一条边。因为把原创 2013-10-06 16:40:58 · 1281 阅读 · 0 评论 -
ZOJ 3422 / SOJ 3883: Go Deeper
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4106题目大意:有一个 0 - 1 序列。给出若干限制,形如 a[x] + a[y] != z。问至多可以同时满足前多少条限制。 算法:二分答案 + 2-SAT判定合法性建图也比较方便:比如不等于1 就是两个元原创 2013-10-06 00:52:59 · 1075 阅读 · 0 评论 -
CF 379F: New Year Tree
题目链接:http://codeforces.com/contest/379/problem/F题目大意:给定一棵树,每次向树上的某个节点添加两个子节点,然后询问树的直径(树上最长路径)。算法:如果我们记录下添加节点前树上的最远路径长度及两个端点A,B。那么添加两个新节点之后,如果直径被更新,那么新直径的一端是A或原创 2014-01-01 00:36:03 · 1729 阅读 · 1 评论 -
BZOJ 1494: [NOI2007]生成树计数
这题确实比较难,所以我写解题报告也尽量从浅显处着手,希望能够帮到大家。题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1494题目大意:有n(n算法:从这道题的数据范围,不难看出要使用状态压缩。首先,我们来确定前k个点的状态。原创 2013-07-25 01:16:19 · 2477 阅读 · 0 评论 -
SRM 551 - 450 ColorfulWolves
题目链接:http://community.topcoder.com/stat?c=problem_statement&pm=12142题目大意:有一只可以变色的狼,给定矩阵,矩阵第i行j列的元素代表是否可以从颜色i直接变为颜色j,'Y'代表可以,'N'代表不可以。每个时刻,狼将从它可以变的颜色中找一个序号最小的,变成那个颜色。已知可以将阵中的某些'Y'变成'N原创 2014-01-11 21:59:52 · 1123 阅读 · 0 评论 -
HDOJ 1530: Maximum Clique
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1530原创 2014-11-09 16:19:47 · 1216 阅读 · 0 评论 -
HDOJ 4975: A simple Gaussian elimination problem.
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define INF 0x3f3f3f3fusing namespace std;const int maxn原创 2014-11-02 16:55:32 · 993 阅读 · 0 评论 -
SGU 307: Cipher
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=307题目大意:现在有一个网格,每个格子上填了1或0。先给出每相邻四个格子的和。求可行方案算法:其实我们不难看出,整个网格的状态是由第一行和第一列决定的。我们不妨枚举(0,0)的状态,然后再根据给出的和对于所有其它第一行和第一列的格子做限制。原创 2013-07-27 23:38:20 · 1891 阅读 · 0 评论 -
SOJ 4110: PE class
题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=4110题目大意:拓扑排序。但是本题的要求不是拓扑序列字典序最小,而是1~N号球所对应的排序后的位置构成的序列字典序最小,也就是,在满足编号1尽量靠前的条件下,编号2要尽量靠前,在满足前两个条件下,编号3尽量靠前,依次类推。算法:反向思维,倒序拓扑。原创 2013-07-27 19:47:50 · 955 阅读 · 0 评论 -
SOJ 3134: windy和水星 -- 水星交通
挺无聊的一道网络流不过有一个挺有特色的地方是要枚举汇点,觉得挺好玩的就记录下来吧题意:有N个点,每两个点间都有一条双向边,问使这些点中至少有两个点不连通所需要破坏的边的最小权值题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=3134取任意点为S点,若u,v两点不连通,则u,v中至少有一个与S也不连通。因为题原创 2012-12-09 14:53:44 · 778 阅读 · 0 评论 -
SOJ 3107: Select
裸的最小割,就是如果用邻接矩阵存的话点的数目有点儿大=。 =逼得我这种懒的要死的邻接矩阵忠实拥护者把自己的模板改成了临界表。。。。值得纪念。。当时觉得反正模板改都改了 ,不如再偷窥一下lieyan大神的代码看看有没有能优化的地方。。。结果就从6000+ms优化到了100+ms......orz烈焰学长。。。长大了我也要写这种可读性又强效率又高的代码题目链接:原创 2012-12-09 15:29:55 · 714 阅读 · 0 评论 -
SOJ 3106: Dual Core CPU
最小割,建图方法有点儿意思题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=3106题意:有若干任务,可以在CPU的A核或B核上运行,花费分别为Wa,Wb。对于一些有关联的任务,若这两个任务不在同一个核上运行,则需要消耗额外花费cost(a,b)。求最小花费。算法:对于每个任务分别向源点和汇点建边,权原创 2012-12-09 16:43:14 · 783 阅读 · 0 评论 -
POJ 3308: Paratroopers
碰到一道非常讨厌的网络流。因为精度的问题,多路增广的dinic会WA。只好仿照SPFA增广求费用流的写法来写了一个感觉像单路增广dinic的东西题目链接:http://poj.org/problem?id=3308题意:一个n*m的网格上有一些点。消去某一行上的点有一个代价,消去某一列上的点也有一个代价,这些代价都是实数且不小于1.0。所需的原创 2013-04-28 10:37:39 · 929 阅读 · 2 评论 -
SOJ 4243: Saving Girl
挺好玩的一道最短路的题,当初学算法的时候最先学的就是最短路,但这么长时间都只是用SPFA解决裸的最短路问题,一直不知道它有什么别的应用。。所以碰到这道题的时候觉得很有意思,就把题解放上来题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=4243题目大意:给你一张n*m的地图,地图上的某些格子摆放着武器,每种武器有自己原创 2012-12-09 14:30:22 · 1114 阅读 · 0 评论 -
SOJ 2035: The Tiling Problem
裸的二分匹配。。。其实我写这题的题解就是想给自己的博客多加个分类而已题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=2035题意:一个n*m的表格,有一些格子是黑色的,问能否用一些1*2的骨牌把所有黑色的格子全部盖住,骨牌不能重叠。。算法:先把格子交替分成A、B两类点,使得只有A类点和B类点才能相邻。。原创 2012-12-09 07:07:59 · 878 阅读 · 2 评论 -
HDOJ 1180: 诡异的楼梯
其实这是一道水题,因为有人问所以做了一下。第一次知道HDOJ AC数1000+的题目我也可以写将近一个小时。。俗话说的好,做水题伤身。俗话又说的好,做水题还犯脑残错误更伤身。俗话还说的好,脑残无药医啊啊啊啊啊啊啊啊题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1180题目大意:给定一个n*m的地图,给定了起原创 2013-07-06 13:14:03 · 1527 阅读 · 0 评论 -
POJ 2449: Remmarguts' Date
题目链接:http://poj.org/problem?id=2449题意:给定一个有向图,寻找有向第K短路。算法:我用的是A*算法。f[x]=g[x]+h[x]。其中g[x]是由起点到当前节点的距离h[x]是当前节点到终点的最短距离。本题的边是单向的,但是在反向SPFA处理h[x]的时候要用到反向边。trick:s等于t的时原创 2013-07-05 02:56:48 · 1165 阅读 · 0 评论 -
POJ 3463: Sightseeing
题目链接:http://poj.org/problem?id=3463题意:给定一个有向图,求起点到终点间,最短路径以及长度为最短路径长度加1的路径总共有几条。算法:对dijkstra算法的一些变形。对于每个点,预处理出起点、终点到它的最短路径长度以及最短路径数。然后对于每个处于某条最短路径上的点,若他的某条边,可以得到一条长度比最短路径长度加一原创 2013-07-06 01:39:35 · 1573 阅读 · 0 评论 -
POJ 2942: Knights of the Round Table
题目链接:http://poj.org/problem?id=2942题目大意:将若干个骑士分配到若干个桌子开会,每个桌子的人数都是奇数。若两个骑士相互憎恨,那么他们不能左右相邻坐。如果一个骑士无法被安排在任何一个桌子,那么他将会被驱逐。输出至少驱逐几个骑士。算法:双联通+奇圈。首先,如果两个骑士可以相邻坐,就在它们之间连一条无向边。然后求双原创 2013-07-27 22:36:08 · 1275 阅读 · 0 评论 -
POJ 3259/ SOJ 2751: Wormholes
题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=2751题目大意:现在有一些无向边,走过每条边需要花费一定的时间ti。另有一些有向的“虫洞”,钻过虫洞可以回到过去,让时间倒流ti。问能否从某地出发,经过一定的虫洞和道路,在出发的时间之前回到原地。算法:我们不妨把道路看作正权边,虫洞看作负权边,以原创 2013-07-27 19:28:50 · 1127 阅读 · 0 评论 -
HDOJ 4635: Strongly connected
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4635题目大意:给定一个有向图,问至多加多少条边,使得新图是非强连通的简单图。算法:与其算加多少边,不如算有多少边不能加。很容易想到,最终的图是分成两个强连通分支的。这两个强联通分支内部分别是完全图,强连通分支之间的边都是由某个SCC指向另一个SCC的,不原创 2013-08-01 19:48:26 · 1064 阅读 · 0 评论 -
POJ 1201/ SOJ 1687: Intervals
题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=1687题目大意:在区间[0,50000]上面有一些整数点。现给出50000个区间。并给出每个区间至少应覆盖多少个点。问这个区间上总共至少有多少个点算法:首先声明我完完全全不知道当时的我为毛线要倒着建图。好吧,当时我是用s[i]表示[i,500原创 2013-07-27 11:02:42 · 1063 阅读 · 0 评论 -
POJ 3662: Telephone Lines
寒假复习图论的时候做的,因为把它加在了暑假集训的专题训练里,所以补一下解题报告。题目链接:http://poj.org/problem?id=3662题目大意:要在N个点建电话线,目前有K根是免费的,问付费建的电话线中最长的一根至少要多长,才能使点1到点n是联通的。算法:二分求最长边的长度。每次二分要用dijkstra判断合法性,判断时,一条边如果长原创 2013-07-27 10:11:23 · 1279 阅读 · 0 评论 -
URAL 1004: Sightseeing Trip
题目链接:http://acm.timus.ru/problem.aspx?num=1004题目大意:求无向图最小环,若有解需输出方案算法:floyd的基础应用,注意排除两点环代码如下:#include#include#include#includeusing namespace std;int d[150][150],edge[150]原创 2013-07-27 11:11:08 · 1383 阅读 · 0 评论 -
POJ 2987: Firing
题目链接:http://poj.org/problem?id=2987题意:现在有一群人,开除每个人都会有一个相应的收益(可正可负)。另给出他们之间的上下级关系,如果开除一个人就必须开除他的下属,以及他下属的下属,依次类推……求开除他们中一部分人所能获得的最大收益。算法:最大权闭合子图。Amber的《最小割模型在信息学竞赛中的应用》里面已经讲解的非常原创 2014-10-31 12:19:54 · 875 阅读 · 0 评论