在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。
求割点与桥的算法是R.Tarjan发明的。本文用边表集存储图的信息,实现了递归和非递归两种算法。...
分类:
其他好文 时间:
2014-11-21 09:11:16
阅读次数:
243
题意:
给出一个矩形湖, 湖里面有一些圆形地小岛, 问能否从左岸乘船到达右岸,如果能,找出最上面的起点和终点。
题解:
如果能从左岸到达右岸,那么一定不能存在一个连通的岛屿从上岸连到下岸, 所以直接从上到下做dfs,判断是否存在从上岸到下岸地连通块,完成判断。那么接下来就是如何找出最上方地点了,画画图便发现,对于起点,如果存在跨越上岸和左岸地连通岛屿,那么起点一定只能在左岸地交点下方,所以,...
分类:
其他好文 时间:
2014-11-19 22:18:31
阅读次数:
168
终于考完了期中考。。。我活着回家了!开始写题ing》》》》》这道题嘛。。。先转化成补图,然后问题就变成求连通块个数。但是会T,是因为点多而且是稠密图。。。于是就用链表优化就好啦~ 1 /*********************************************************...
分类:
其他好文 时间:
2014-11-14 17:19:25
阅读次数:
226
题意:
n(2000)个点的图 给出它的最短路矩阵 用n条边构造出满足最短路矩阵的图 保证图连通且解存在
思路:
我们可以先保证图连通 那么需要n-1条边 联想到是不是最小生成树??
可以这样想 假设abc点已经连通 现在考虑再加入到连通块中一个点比如d 如果d-b的距离是d到abc三个点中最短的 那么这条边一定要被选 因为如果不选d-b 假设选了d-a 那么d...
分类:
其他好文 时间:
2014-11-06 21:58:15
阅读次数:
234
Problem 1. TreeInput file: tree.inOutput file: tree.outTime limit: 1 second给出 N 个点的树和 K,问能否把树划分成 N /K 个连通块,且每个连通块的点数都是 K。Input第 1 行,1 个整数 T ,表示数据组数。接下...
分类:
其他好文 时间:
2014-11-04 22:29:10
阅读次数:
291
题意:戳这里思路:很明显是一个图论模型。。 就两种图形: 1、图中存在环,那么就是所有环的gcd为最大答案。gcd的大于3的最小约数为最小答案 2、不存在环,那么是每个弱连通块的最长链之和为最大答案,最小答案为3。。 但是这一题最关键的是实现,实现技巧太赞了。。 首...
分类:
其他好文 时间:
2014-11-02 00:35:49
阅读次数:
232
POJ 3177 Redundant Paths
题目链接
题意:给定一个连通无向图,问加几条边能使得图变成一个双连通图
思路:先求双连通,缩点后,计算入度为1的个数,然后(个数 + 1) / 2 就是答案(这题由于是只有一个连通块所以可以这么搞,如果有多个,就不能这样搞了)
代码:
#include
#include
#include
using namesp...
分类:
其他好文 时间:
2014-10-24 10:58:00
阅读次数:
108
HDU 3849 By Recognizing These Guys, We Find Social Networks Useful
题目链接
题意:说白了就是求一个无向图的桥
思路:字符串hash掉,然后双连通,要注意特判一下如果不是一个连通块,那么答案是0
代码:
#include
#include
#include
#include
#include
...
分类:
Web程序 时间:
2014-10-23 14:24:44
阅读次数:
135
题目:统计一个矩阵中所有的连通块的个数,按递减输出。
分析:搜索,floodfill。直接利用dfs求解即可。
说明:数组开小了╮(╯▽╰)╭。
#include
#include
#include
#include
#include
using namespace std;
char maps[55][55];
typedef struct tnode
{
char ch...
分类:
其他好文 时间:
2014-10-19 20:02:57
阅读次数:
269
题目链接
题意: 给定一个无向图,问最少添加多少条边,使得这个图成为连通图
思路:首先注意题目给出的无向图可能是非连通的,即存在孤立点。处理孤立点之后,其他就可以当作连通块来处理,其实跟POJ3352很像,只不过存在孤立点而已。所以找出桥,缩点,然后统计度数为0(伸出两条边)的点u和度数为1(伸出一条边)的点。最后的答案为(2 * u + v + 1) / 2。
PO...
分类:
其他好文 时间:
2014-10-16 02:03:01
阅读次数:
247