深度优先搜索遍历图
00-1010关于图论算法
00-1010深度优先搜索(DFS)返回到最近的分叉处,并在每次无法沿着路径前进时继续向下遍历。换句话说,每一次路径不可达,就代表一条完整路径的形成。
00-1010连通分量:在无向图中,如果两个顶点可以互相到达(通过某条路径间接到达),那么这两个顶点是连通的;如果图G中的任意两个顶点是连通的,那么图G称为连通图;否则称为非连通图,其中最大连通子图称为连通分量。
强连通分支:在有向图中,如果两个顶点可以通过有向路径到达另一个顶点,则称它们是强连通的;如果图G的任意两个顶点可以强连通,那么图G称为强连通图;否则称为非强连通图,极强连通子图称为强连通分量。
我们知道,如果我们遍历整个图,我们需要遍历所有的连通块(连通分量和强连通分量)。基本思想是将遍历的顶点设置为遍历期间遍历的顶点。
相关文章
基于上图的构造,我们主要实现DFS核心代码。//DFS顶点
无效DFS(int v){ 0
//邻接表
Cout '到达顶点' vendl
访问[v]=1;
//所有可到达的点
for(int I=0;iadj[v]。size();I){ 0
int temp=adj[v][i]。五;
if(请访问[temp]==0){ 0
外勤部(临时);
}
}
}
//DFS图
void DFSTrave(Vectornode g[MaxV]){
for(int I=0;imaxVI){ 0
if(!g[i]。清空()访问[I]===0)
外勤部(一);
}
}
}