现在的位置: 首页 > 综合 > 正文

无向图连通判断(并查集)

2017年11月10日 ⁄ 综合 ⁄ 共 636字 ⁄ 字号 评论关闭

无向图连通判断

题目:判断一个无向图是否为连通图。输入为无向图的邻接矩阵。

输入:
输入有若干行
第一行为正整数N(0<N<=3000),代表图中点的个数
接下来N行,每行有N个数据,每个数据以空格分隔,代表邻接矩阵。

输出:
一行。

连通,输出yes;

否则,输出no。

----------------------------------------------分割线----------------------------------------------------

无向图是连通图,就是任意两个节点之间有通路

开始想从1--n-1依次对矩阵做幂运算,然后求和,显然这种方法时间复杂度和空间复杂度都很高,点数达1000,时间就会爆表

在网上查了查,可以用并查集来解(关于并查集这篇文章讲的很详细,一边看不懂可以多看几遍

用到的数据结构 有树,不过是用数组实现的,比较简单

用到的操作有

  -Union (Root1, Root2) //合并操作;把子集合Root2和子集合Root1合并.如果Root1和 Root2已经相交,不执行操作.
  -Find (x) //搜索操作;搜索元素x所在的集合,并返回该集合的名字--根节点.
  -UFSets (s) //构造函数。将并查集中s个元素初始化为s个只有一个单元素的子集合.
注意:对于并查集来说,每个集合用一棵树表示。
   集合中每个元素的元素名分别存放在树的结点中,此外,树的每一个结点还有一个指向其双亲结点的指针。   

关键代码,上面的链接中都有,就不在写了


抱歉!评论已关闭.