pascal如何判断连通性

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:04:48
在无向图内如何判断一对顶点之间是否连通
最好给个思路……程序附不附都可以……

并查集会用么?
把能联起来的节点并入一个集合,最后看这两个点是否在一个集合中,
复杂度为O(E),
楼上说的宽搜是针对点的,复杂度为O(V),
当然看看数据量,哪个好用哪个咯.
E为边的个数,V为点的个数....
想了解并查集可以去维基看一下,是pascal代码的~

宽搜.....从一个顶点开始搜,搜过的赋成true,看另一个顶点是否为true。

暂时想到几种方法
1.BFS并进行标记,直到每一个点都被访问过。那么顶点的标记就是连通块的标号
2.Floyed或者其它最短路径算法。如果两点不连通那么它们直接的最短路为maxlongint(初始化所有边权为1)
3.并查集。如果给出的数据是按边来的,那么这种方法是最好的了。每读入一条边(u,v),就把u,v合并到同一个集合里。询问的时候只要判断它们是否在同一集合就可以了。

还有其它办法暂时没想出来或者是太难描述了