int G[MAXV][MAXV];//MAXV为最大顶点数voidDFS(int u,int depth){//u为当前访问的顶点标号,depth为深度
vis[u]=true;//设置u已被访问//如果需要对u进行一些操作,可以在这里进行//下面对所有从u出发能到达的分支顶点进行枚举for(int v =0; v < n; v++){if(vis[v]==false&& G[u][v]!= INF){//如果v未被访问,且u可到达vDFS(v,depth+1);//访问v,深度加1}}}voidDFSTrave(){//遍历图Gfor(int u =0; u < n; u++){//对每个顶点uif(vis[u]==false){//如果u未被访问DFS(u,1);//访问u和u所在的连通块,1表示初始为第一层}}}
邻接表版
vector<int> Adj[MAXV];//图G的邻接表voidDFS(int u,int depth){//u为当前访问的顶点标号,depth为深度
vis[u]=true;//设置u已被访问//如果需要对u进行一些操作,可以在这里进行for(int i =0; i < Adj[u].size(); i++){//对从u出发能到达的所有顶点vint v = Adj[u][i];if(vis[v]==false){//如果v未被访问DFS(v,depth+1);//访问v,深度加1}}}voidDFSTrave(){//遍历图Gfor(int u =0; u < n; u++){//对每个顶点uif(vis[u]==false){DFS(u,1);访问u和u所在的连通块,1表示初始为第一层}}}