连通性的判断:
可以用dfs遍历整个图,用一个count计数联通点的数量,如果count等于n,那么整个图就是连通的,那么就是我们要找的就是用什么方法,可以用dfs或者bfs,大体思路就是从一个点开始找,先判断是否遍历过,没有就找到它的关系点,再从关系点dp,遍历后将count加一,向下访问,如果连通就会遍历到所有点即count=n
int count = 0;
void dfs(Map G, int i)
{
int j = 0;
visited[i] = 1;
count++;
for(j=0; j<G.num; j++)
{
if(G.map[i][j]==1 && !visited[j])//i和j有关系相邻,并且j顶点没有被访问过
{
dfs(G, j);
}
}
}
寻找割点/割边:
割点:定义就是如果把这个点从图中去掉,图的连通性被改变,这样的点就叫做割点
定理:1.如果一个点是割点,那么它存在一个子节点V,V和V的后代点都没有其他路回到割点的源点。 2. 根节点如果有两个以上的子树,那么它就是一个割点
思路:
选择dfs从一个