DS图遍历--深度优先搜索

题目描述

给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始

注意:图n个顶点编号从0到n-1

输入

 

第一行输入t,表示有t个测试实例

第二行输入n,表示第1个图有n个结点

第三行起,每行输入邻接矩阵的一行,以此类推输入n行

第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开

以此类推输入下一个示例

 

 

输出

每行输出一个图的深度优先搜索结果,结点编号之间用空格隔开

 

 

样例输入

2

4

0 0 1 1

0 0 1 1

1 1 0 1

1 1 1 0

5

0 0 0 1 1

0 0 1 0 0

0 1 0 1 1

1 0 1 0 0

1 0 1 0 0

样例输出

0 2 1 3

0 3 2 1 4

#include<iostream>
using namespace std;
const int maxlen= 20;
class Deep{
    private:
      bool visit[maxlen];
      int maxtrix[maxlen][maxlen];
      int vexnum;	
      
      void DFS(int v){//深度优先搜索
      	  visit[v]= true;
      	  cout<<v<<' ';
      	  
      	  int * adj= new int[vexnum+ 5];
      	  for(int i= 0; i< vexnum; i++)
      	   adj[i]= -1;
      	  
      	  int pos= 0;
      	  for(int i= 0; i< vexnum; i++){//找到与v相连的节点
      	  	  if(maxtrix[v][i])
      	  	    adj[pos++]= i;
            } 
        
          //对没遍历过的节点调用深度优先搜索
          for(int i= 0; i< pos; i++){
          	if(!visit[adj[i]])
          	  DFS(adj[i]);
          }
      }
    public:
        void setMatrix(int vnum, int mx[maxlen][maxlen]){//初始化
            vexnum= vnum;
            
            for(int i= 0; i< vexnum; i++)
               for(int j= 0; j< vexnum; j++){
               	  maxtrix[i][j]= 0;
               	
               }
            for(int i= 0; i< vexnum; i++)	
               for(int j= 0 ; j< vexnum; j++)
                 maxtrix[i][j]= mx[i][j];
        }
        void DFSvisit(){

            for(int i= 0; i< vexnum ;i++)//初始时所有的节点都没遍历过
              visit[i]= false;
            
            for(int i= 0; i< vexnum; i++)
              if(!visit[i])
               DFS(i);
            
            cout<<endl;
        }
};
int main(){
    
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        int mx[maxlen][maxlen];
        
        for(int i= 0; i< n; i++)
          for(int j= 0;  j< n ;j++)
            cin>>mx[i][j];
        
        Deep deep;
        deep.setMatrix(n, mx);
        deep.DFSvisit();
    }
    return  0;
    
}

 

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/weixin_41879093/article/details/83552173
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞