图论
文章平均质量分 81
代金桥
交流邮箱daijinqiao(at)163.com
展开
-
floyd算法求最小环
(1)floyd算法求最小环(无向图)设一个环中的最大结点编号为k,与它相连的两个点为i, j,则这个环的最短长度为g[i][k] + g[k][j] + dist[i][j](最短距离)根据floyd算法原理,在最外层做了k - 1次后,dist[i][j]代表了i到j的路径中,所有结点的编号都小于k的最短路径代码: FORE(k, 1, N) {原创 2012-02-17 21:08:06 · 606 阅读 · 0 评论 -
poj 3041 Asteroids
类型:最小顶点覆盖题目:http://poj.org/problem?id=3041来源:USACO 2005 November Gold思路:将行号和列号分别看做不同的点,如果在行x、列y中存在asteroid,则构造边x->y,则题目要求的即是用最少的点覆盖所有的边,即最小顶点覆盖,最小顶点覆盖 = 二分图最大匹配// poj 3041 Asteroids// ac 12原创 2012-03-19 17:34:51 · 189 阅读 · 0 评论 -
poj 1325 | zoj 1364 Machine Schedule
类型:最小顶点覆盖题目:http://poj.org/problem?id=1325思路:裸的最小顶点覆盖!!!题意要把握准确[mode:工作模式,在同种模式下可进行多项工作]// poj 1325 Machine Schedule// ac 176K 0MS#include #include #include #include #include using na原创 2012-03-19 20:07:56 · 249 阅读 · 0 评论 -
poj 1523 | zoj 1119 SPF
类型:图的割点题目:http://poj.org/problem?id=1523来源:Greater New York 2000思路:构图,通过dfs【Tarjan算法】记录各个顶点的深度优先数,在回退的过程中记录low数组,如果孩子节点low值大于等于父节点step值,记录分割的联通分量的个数!!!输出格式// poj 1523 SPF// ac 1164K 16MS原创 2012-03-20 09:14:23 · 352 阅读 · 0 评论 -
hdoj 2473 Junk-Mail Filter
类型:并查集题目:http://acm.hdu.edu.cn/showproblem.php?pid=2473来源:2008 Asia Regional Hangzhou思路:因为要保证联通分量的连通性,所以当删除某一节点后,该联通分量仍然需要联通。可以这样想,当删除某一点i时,仍然保留编号为i的点为当前删除点的“旧点”【这样原来属于该联通分量的连通性未变】,构造新点num,表示点原创 2012-04-06 10:30:36 · 309 阅读 · 0 评论 -
poj 3177 Redundant Paths
类型:双连通分量 + 缩点题目:http://poj.org/problem?id=3177来源:USACO 2006 January Gold思路:双连通分量不需要添加新边,将各个双连通分量看做一个点的话,生成树的边即为原图中的桥,此时添加的边数 = (树中度为1的节点 + 1) / 2进行Tarjan算法过程中,统计不同桥的信息,如果某边不是桥,则两节点属同一连通分量,原创 2012-03-20 17:42:13 · 283 阅读 · 0 评论 -
zoj 2588 Burning Bridges
类型:无向图割边题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1588来源:Andrew Stankevich's Contest #5思路:题目要求的是无向图的所有的割边,可以通过Tarjan算法求解,无向图中的一条边(u, v)是桥,当且仅当(u, v)为生成树中的边,且满足dfn[u] 根据该性质判断并原创 2012-03-20 10:45:15 · 354 阅读 · 0 评论 -
hdoj 3622 Bomb Game
类型:2-sat题目:http://acm.hdu.edu.cn/showproblem.php?pid=3622来源:2010 Asia Regional Tianjin Site —— Online Contest思路:二分枚举半径,判断解是否存在// hdoj 3622 Bomb Game// wa wa 1984MS 612K#include #include原创 2012-04-06 13:18:13 · 219 阅读 · 0 评论 -
hdoj 3631 Shortest Path
类型:最短路题目:http://acm.hdu.edu.cn/showproblem.php?pid=3631来源:2010 Asia Regional Tianjin Site —— Online Contest思路:n ,使用floyd算法求最短路,这样查询时间为O(1),时间复杂度为300^3【思路一定要开阔!!!】// hdoj 3631 Shortest Path/原创 2012-04-06 13:24:59 · 264 阅读 · 0 评论 -
poj 2762 Going from u to v or from v to u
类型:有向图连通性题目:http://poj.org/problem?id=2762 判断一个有向图单向连通性来源:POJ Monthly--2006.02.26,zgl & twb思路:对于强连通分量中的点相互连通,可以将其看做一个点处理。搜索所有的强连通分量,对强连通分量缩点后,构造新图进行拓扑排序,判断是否成链。如果成链,结果为真。假如不成链,即存在某时刻两个点的入度都为0,原创 2012-03-21 09:50:50 · 424 阅读 · 0 评论 -
hdoj 2962 Trucking
类型:最短路 + 二分答案题目:http://acm.hdu.edu.cn/showproblem.php?pid=2962来源:2008 Rocky Mountain Regional思路:二分枚举容量限制ans,在该限制下求最短路,如果无路径,说明ans偏大,否则偏小。当ans不足一时,原图无解!!!最后重新计算以免除精度问题,如:ans = 7, 当ans = 7.000原创 2012-04-08 21:36:03 · 295 阅读 · 0 评论 -
poj 2186 Popular Cows
类型:有向图连通性题目:有n头牛,m个形式如(A, B)表示牛B受牛A欢迎,求受所有牛欢迎的牛的数量来源:USACO 2003 Fall思路:在同一强连通分量中,不同牛之间相互受欢迎,可以将其看做一个点[缩点],构造新图。假设新图连通,如果某个牛受所有其他牛欢迎,则其顶点的出度为0,其他点出度不为0,否则将不存在牛受其他所有牛欢迎。如果新图不连通,则存在多个出度为0的点。所以可以通过判原创 2012-03-21 16:20:35 · 238 阅读 · 0 评论 -
hdoj 3639 Hawk-and-Chicken
类型:连通性题目: http://acm.hdu.edu.cn/showproblem.php?pid=3639来源:2010 ACM-ICPC Multi-University Training Contest(19)——Host by HDU思路:(1)题目求的是,获得最多支持的人的人,而不是获得最多票的人的人,即每人只能支持其他人一次(2)联通子图的点可相互到达,将其原创 2012-04-15 18:52:19 · 380 阅读 · 0 评论 -
hdoj 3038 How Many Answers Are Wrong
类型:并查集题目:http://acm.hdu.edu.cn/showproblem.php?pid=3038来源:2009 Multi-University Training Contest 13 - Host by HIT思路:(1)右端点为根,左端点为叶子(2)sum[a]表示区间[a + 1, a的父亲节点]的序列的和(3)路径压缩的同时更新sum的值(4)原创 2012-04-16 17:38:21 · 389 阅读 · 0 评论 -
usaco 3.3 Riding the Fences
题目:打印路径的欧拉回路[dfs实现]1、在图G中任意找一个回路C2、将图G中属于回路C的边删除3、在残留图的各极大联通子图中分别寻找欧拉回路4、将各极大联通子图的欧拉回路合并到C中得到图G的欧拉回路/*ID:daijinq1PROG:fenceLANG:C++*/#include #include using namespace std;#define MA原创 2012-04-18 08:42:57 · 309 阅读 · 0 评论 -
poj 1386 | hdoj 1116 play on words
类型:欧拉回路题目:http://poj.org/problem?id=1386来源:Central Europe 1999思路:首先考虑的是将单词看做点,可以连接的单词之间连一条边,这样就是求一条路径包含所有的点,该问题为复杂的哈密尔顿问题。然后考虑转化模型,将单词看做边,每个单词的首尾字符看做点,那么每个单词就是一条由首字符点连向尾字符点的边,即转化为就一条路径连接所有的边原创 2012-03-19 09:56:34 · 244 阅读 · 0 评论 -
poj 3694 Network
类型:图连通性题目:http://poj.org/problem?id=3694来源:2008 Asia Hefei Regional Contest Online by USTC思路:Tarjan 算法搜索得到一颗树,记录每个节点的父节点及该节点的搜索深度,同时记录桥【通过记录末端点来记录桥--一一对应】对于新添加的边,容易知道从这两个端点往上到其最近公共祖先路径上的桥会消除原创 2012-04-04 21:45:58 · 235 阅读 · 0 评论 -
hdoj 3666 THE MATRIX PROBLEM
类型:差分约束题目:http://acm.hdu.edu.cn/showproblem.php?pid=3666来源:2010 Asia Regional Harbin思路:对于题目容易得到:L 对于乘法的消除可以使用对数的性质。得到:log(a[i]) - log(b[j]) 添加边:(j + n, i, log(U / c[i][j])) 和 (i, j + N,原创 2012-04-02 15:46:18 · 284 阅读 · 0 评论 -
poj 3207 Ikki's Story IV - Panda's Trick
类型:2-sat题目:http://poj.org/problem?id=3207来源:POJ Monthly--2007.03.04, Ikki思路:对每一条link有两种选择,放圆内或者圆外。求满足条件的情况是否存在,属于2-sat问题。(1)将每条link看做两个点,分别表示在圆内链接和在圆外链接,只能选一个,用i和i`表示。(2)如果两条link必须一个在圆内,一个原创 2012-03-24 17:43:51 · 238 阅读 · 0 评论 -
poj 1470 | zoj 1141 Closest Common Ancestors
类型:LCA题目:http://poj.org/problem?id=1470来源:Southeastern Europe 2000思路:使用LCA算法求最近公共祖先,并记录个数// poj 1470 Closest Common Ancestors// OLE AC 2956K 563MS#include #include #include #include #inc原创 2012-03-23 18:39:51 · 342 阅读 · 0 评论 -
hdoj 3986 Harry Potter and the Final Battle
类型:最短路题目:http://acm.hdu.edu.cn/showproblem.php?pid=3986来源:2011 Multi-University Training Contest 15 - Host by WHU思路:伏地魔可以破坏任何一条边,当他破坏的边不是最短路上的边的时候,哈利波特可以选择走最短路。当破坏最短路上的边的时候,为保证最坏情况下的最短路,枚举删除最短原创 2012-03-23 18:46:23 · 278 阅读 · 0 评论 -
poj 3160 Father Christmas flymouse
类型:有向图连通性 + spfa求最长路题目:http://poj.org/problem?id=3160来源:POJ Monthly--2006.12.31, Sempr思路:强连通分量中的点可以相互到达,可以将其缩点,构造新有向无环图。如果要使结果最大,容易知道圣诞老人的起点是新图中节点入度为0的点。将新点的权赋值到对应的边上,则问题即是求从起点开始的最长路!!!点权有负值原创 2012-03-23 18:49:13 · 293 阅读 · 0 评论 -
zoj 1654 Place the Robots
类型:二分图题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=654来源:ZOJ Monthly, October 2003思路:将空位看做边,行列看做点。如果行中间有墙,则行可以划分为多个“行”,使得两两之间不会相互攻击。由于每条边表示一个空地,有冲突的空地之间必有公共顶点。所以结果即是求新构造二分图的最大匹配原创 2012-03-24 12:07:22 · 280 阅读 · 0 评论 -
zoj 1508 | poj 1201 Intervals
类型:差分约束题目:http://poj.org/problem?id=1201来源:Southwestern Europe 2002思路:设S[i]是集合z中小于等于i的元素的个数(1)z集合中范围在[ai, bi]的整数个数即S[bi] - S[ai-1]至少为ci,得到不等式组S[bi] - S[ai-1] >= ci ,转化为 S[ai-1] - S[bi] (2)原创 2012-03-26 18:24:21 · 377 阅读 · 0 评论 -
hdoj 2437 Jerboas
类型:拓扑排序题目:http://acm.hdu.edu.cn/showproblem.php?pid=2437来源:2008 Asia Chengdu Regional Contest Online思路:题目是求到某个满足条件的节点的最短路且路径长度为k的倍数。使用二维数组dist[i][j]记录当从源点到当前节点i且满足路径长度 % k = j时的最短路径长度则最终结果为d原创 2012-03-26 20:39:37 · 353 阅读 · 0 评论 -
poj 3683 Priest John's Busiest Day
类型:2-sat【模板】题目:http://poj.org/problem?id=3683来源:POJ Founder Monthly Contest – 2008.08.31, Dagger and Facer思路:本题为需要输出结果的2-sat问题。令i和i + n表示节点i,对于有向边的构造,如果i和j有冲突,那么选择i,j + n必选,选择j, i + n必选,构造两条有向原创 2012-03-27 10:42:54 · 297 阅读 · 0 评论 -
poj 2723 Get Luffy Out
类型:2-sat题目:http://poj.org/problem?id=2723来源:Beijing 2005思路:2-sat判定问题。将一把钥匙看做两个点,不取为i, 取为i + 2n。(1)对于每一对钥匙(u, v),二者最多只能选一个,故有选择v + 2n, u必选,选择u + 2n,v必选。(2)对于每一个们上的锁(u, v),二者至少选一个,固有选择u,v +原创 2012-03-27 16:03:08 · 266 阅读 · 0 评论 -
POJ 1734-Sightseeing trip
题目是让我们求一个无向图的最小环[周长最小],并将路径按照顺序打印出来求无向图的最小环可以用floyd算法来求打印路径可以有两种方法(1)用pre[i][j] 数组表示 从i到j的路径中 最后松弛的节点,该节点一定在从i到j的路径中,然后递归求解(2)通过枚举节点,如果满足dist[i][k] + dist[k][j] == dist[i][j],则说明k在从i到j的路径中,然后递原创 2012-02-18 23:44:37 · 220 阅读 · 0 评论 -
poj 2976 Dropping tests
类型:分数规划题目:给你n次测试,对于测试i,总分为bi,你可以得到ai的分数,现让你除去某些测试使得剩下的平均分数最大来源:Stanford Local 2005思路:假设当前猜测值为ans(0 ∑fi ∑(bi * ans) <∑ai,即∑ai / ∑ bi > ans,则ans太小,二分答案即可// poj 2976 Dropping tests// ac 196原创 2012-03-17 09:00:34 · 227 阅读 · 0 评论 -
poj 3621 Sightseeing Cows
类型:分数规划题目:牛可以从任意点出发, 每个点有欢乐值, 一个点可以去多次, 但是欢乐值只增加一次, 每条边有时间消耗, 求一条回路使得 总欢乐值/总时间 最大来源:USACO 2007 December Gold思路:设当前答案为ans,构造新边edge(u, v) * ans - f[v]。假设存在负环,则有edge(u1, v1) * ans - f[v1] + edg原创 2012-03-16 23:39:09 · 350 阅读 · 0 评论 -
POJ 2585 | ZOJ 2193 Window Pains
类型:拓扑排序题目:http://poj.org/problem?id=2585来源:South Central USA 2003思路:每个出现在最前面的数字会覆盖所有可能出现在该位置的窗口,构造有向边连向被覆盖的窗口。然后拓扑排序判断环的存在。!!!每个窗口只能被同一窗口覆盖一次// POJ 2585 Window Pains// ac 236K 0MS#include原创 2012-03-18 15:20:26 · 473 阅读 · 0 评论 -
poj 3648 Wedding
类型:2-sat题目:http://poj.org/problem?id=3648来源:Waterloo Local Contest, 2007.9.29思路:每个人都有可能坐在左边或者右边,将其分为两个点i, i + 2 * n。定义新娘在左侧。(1)对于一对有暧昧关系的人i, j。如果i在右边,必有j在左边,如果j在右边,必有i在左边。构造有向边: addedge1(i原创 2012-03-27 13:23:15 · 239 阅读 · 0 评论