
图论——强连通分量、割点、割边
文章平均质量分 78
dumeichen
这个作者很懒,什么都没留下…
展开
-
poj 1904 tarjan强连通分量(给国王的2000个儿子找老婆 )
题意:有n个王子,每个王子i有ki个他喜欢的妹子,每个王子只能和喜欢的妹子结婚,大臣给出一个匹配表(假设肯定是对的),每个王子都和一个妹子结婚,但是国王不满意,他要求大臣给他另一个表,每个王子可以和几个妹子结婚,按序号升序输出妹子的编号,这个表应满足所有的王子最终都有妹子和他结婚。思路:一开始自己想了一会儿只能想到是反复找匹配,连大臣给的初始匹配有什么用都不知道。后来看了题解(http://w原创 2015-04-15 21:03:17 · 640 阅读 · 0 评论 -
poj 3160/3249 强连通分量+dp(SPFA)(正的评价值才发礼物)
题意:某人要去给n个人送礼,每个人在不同的地方,且他们之间共有m条单向边。另外每个人会提供一个舒心值(也即点权)。现此人任选某个人开始,可以沿单向边访问下一个人。对每个节点可以选择给他礼物并获得相应舒心值或者什么也不做(其中没给过礼物的点可以访问多次,但给过礼物的点只能访问一次),求他能获得的最大舒心值。思路:首先可以证明在一个强连通分量中可以获得所有正的权值并舍弃所有负的权值。然后通过缩点形原创 2015-03-05 12:47:28 · 407 阅读 · 0 评论 -
poj 2942 双连通分量+染色判二部图(驱除骑士)
题意:已知骑士有些人之间有矛盾,如果一个骑士能够出现在满足如下条件的任何一个圈中,则可以保留他;否则这个骑士必须要驱除。圈的条件是:1、人数大于1;2、总人数为奇数;3、有仇恨的骑士不能挨着坐。问需要驱除几个骑士(有几个骑士不能和任何人形成合法圈)?思路:双连通分支+交叉染色。建图方法是将没有矛盾的骑士连边,求双连通分量(关于点的)。对于每个双连通分量,看是否存在奇圈,若存在那么这个双连通分量原创 2015-10-10 10:40:00 · 387 阅读 · 0 评论 -
poj 3592 强连通分量+最长路(spfa或者dp)(Instantaneous Transference)
题意:一辆坦克从N*M矩阵的左上角出发,每次往右或往下走一格,每格可以是'#'(表示不可以走),'*'表示传送门,或者是数字,表示在该格可以获得的值(只能取一次),传送门可以将到达该处的坦克传送到指定位置,你可以选择被传送或者走相邻的格,问坦克可以获得的值的和最大为多少。思路:N*M矩阵上每个点看成图中的一个点,能够走的连边。那么显然在一个强连通分量里的点的值是全部能够得到的。那么思路就是先求原创 2015-08-05 21:12:01 · 498 阅读 · 0 评论 -
poj 1236 tarjan缩点(能达到全图的最少起点数)
题意:有若干学校,某些学校可以达到其他学校。问题1:一个新软件要给予全部学校最少给多少个学校;问题2:将软件随机给学校,问较之问题1的最少数量需要增加多少个学校?思路:tarjan求强连通分量,之后缩点形成有向无环图。问题一为此图入度为0的定点数。问题2为图中入度为0和出度为0的顶点数量的大者。输入:52 4 3 04 5 0001 0输出:12原创 2014-07-11 20:53:03 · 518 阅读 · 0 评论 -
poj 2762 强连通分量+拓扑排序(判断图是否为单向连通)
题意:给定一个有向图,判断此图是否为单向连通(=半连通)。(注意单向连通和弱连通的区别:前者是图中任意两点u和v,或者有uv路或者有vu路;后者是有向图的基图是连通图)思路:先求出强连通分量,然后判断拓扑排序是否为一。记得算法课讲过一个DAG图是单向连通当且仅当其拓扑排序唯一。据此此题可解。#include #include #define min(a,b) ((a)<(b)?(a):原创 2015-03-01 15:05:08 · 1607 阅读 · 0 评论 -
poj 2553(3180) tarjan强连通分量(找图的“sink”点)
题意:定义图的bottom集合为:bottom(G)={v∈V|∀w∈V:(v→w)⇒(w→v)}。思路:依题意,所求即求出强连通分量缩点后出度为0的那些强连通分量中得点。用tarjan算法即可。#include #include #include #define min(a,b) ((a)<(b)?(a):(b))#define clr(s,t) memset(s,t,sizeo原创 2015-03-01 10:20:00 · 504 阅读 · 0 评论 -
poj 3177 割边(双连通分量)
题意:求最少添加多少条边可变无桥的连通图。思路:求出所有的双连通分量(块),然后进行缩点。所求为缩点后的图的叶子数量加1,再除以2。要点:属于同一双连通分支的点的low值必相同。求双连通分量时可以不用dfn数组。注意:题目中有重边,可以用邻接矩阵判断一下重;存在临界表时判断一下也不会超时。#include #include #include using namespace std原创 2015-04-20 21:56:15 · 356 阅读 · 0 评论 -
poj 2723 2-SAT(锁开钥匙救人)
题意:某人要去一个地方救朋友。已知他有2n把钥匙,分成2组,给你每组的钥匙信息,并且每组的钥匙只能用一个。有m个门,每个门有2个锁,只要打开一个锁这个门就开了。(顺序遇见m个门)问你最多能够打开多少个门。思路:原创 2014-08-14 20:56:56 · 517 阅读 · 0 评论 -
poj 3678 2-SAT (Katu Puzzle)
题意:欲构建n个点m条边的图,限制为:每条边上有一种预算()原创 2014-08-12 14:21:13 · 438 阅读 · 0 评论 -
poj 3207 2-SAT(圆周点连边不相交)
题意:圆周上有n个点,标号为0-n思路:原创 2014-08-12 14:41:35 · 884 阅读 · 0 评论 -
poj 3683 2-SAT (牧师能参加所有的婚礼仪式吗)
题意:有若干对新人结婚,每个婚礼有一个开始时间和jie原创 2014-08-13 16:37:04 · 523 阅读 · 0 评论 -
poj 2296 2-SAT(无矩形相交的最大边长)
题意:在平面直角坐标系sha一个地图上贴正方形标签,标签不能重合,地图上点的位置在标签的下边中点,或者上边中点,求标签的最大边长。思路:原创 2014-08-11 21:24:33 · 635 阅读 · 0 评论 -
poj 1523 tarjan求割点
题意:求割点,并求割点将原图分成几个连通分量思路:ra原创 2014-07-15 20:37:04 · 352 阅读 · 0 评论 -
poj 3114 强连通分量+最短路(间谍通信)
题意:给定一个有向带权图,随后给出q个查询(a,b),求a->b的最短花费。其中如果这两个city属于同一个国家,则花费时间为0。两个city同属于一个国家当且仅当这两个city互相可达。思路:属于同一个强连通分量的点就是属于同一个国家了。然后进行缩点,在缩点之后的图上求最短路即可。一开始看到多组查询而且点数不多就写了Floyd,但是TLE。随后改成每次查询就来一次SPFA,这样AC。#i原创 2015-03-04 22:27:32 · 492 阅读 · 0 评论