割边|割点
sdj222555
这个作者很懒,什么都没留下…
展开
-
ZOJ 2588 Burning Bridges 求割边
求割边,实际上跟求割点类似,dfs的过程中就能求出割边,判断条件变为low[v] > dfn[u]和(u,v)不能是重边 我用的邻接表存储,结构体中新增的一个变量,用来判断是否有重边 每次插入边之前先扫描一遍该点的邻接点,看是否已经存在一个边 /* ID: sdj22251 PROG: subset LANG: C++ */ #include #include #inclu原创 2012-01-17 23:51:24 · 1080 阅读 · 0 评论 -
POJ 1523 SPF 求割点
这道题的大意就是求割点,并且求出假如去掉这个割点后,整个图被分为了几部分 看的北大那本图论书,无向图的点连通性的求解。 然后就把代码打上来了。 书上是用邻接矩阵存储,我改用了vector 并且书上的代码也有一些问题,就是没有处理好边和回边的问题 因为low数组的定义,就是low[u] = min(dfn[u], low[w], dfn[v]) 其中w是u的子女,而(u,v)是一条回边原创 2012-01-15 22:51:02 · 1002 阅读 · 0 评论 -
POJ 2942 Knights of the Round Table 点重连通分量+交叉染色判奇圈
这道题的意思是,一群武士,某些武士之间相互仇视,在一起会发生争斗事件,因此只有满足一定条件才能够参加圆桌会议。首先是圆桌上相邻的两个武士不能有仇,同一个圆桌上的武士数量必须是奇数,而且大于2。最后求完全不可能参加会议的武士的数量。 那么可以联想到转化为一个无向图,各个武士看成顶点,互相没仇的武士之间建边,表示可以坐在一块, 建立无向图后,所有能坐在一起的武士分为一组,这一组在图中必然就原创 2012-01-19 14:50:59 · 1924 阅读 · 1 评论 -
POJ 3694 network 无向图求桥 手写栈版tarjan
这题以前做过 大意就是给出一个无向图,然后每次询问加一条边,然后输出当前图中剩余的桥的个数 大概做法就是先tarjan把桥都弄出来,然后每次加边就裸求LCA。 不过很蛋疼的事情就是在HDU上会爆栈,这很贱,所以有必要弄个手写栈版得tarjan #include #include #include #include #include #include #include原创 2012-09-16 10:19:04 · 3155 阅读 · 0 评论 -
POJ 3694 Network 割边+LCA
这道题跟3177意思差不多,不过最后问的不一样,说是加入某条边后,问图内剩余的桥有多少。 这题的大概思路就是,先求割边并标记,然后缩点,形成一棵树,然后把这颗树上各个结点的父结点用dfs求出来,再然后就是LCA了,因为加入某条边后,树内会形成一个圈,这个圈上所有的边将不再是桥,可以发现跟LCA的关联。 求LCA用裸的方法就行,比较直观些,也好操作。 实际上,这道题也不一定要缩点,原创 2012-01-20 01:31:30 · 4695 阅读 · 6 评论