无向图 邻接矩阵dfs(最简单)

  出处LINK  

 

改写:去除sum变量;新增结点6,实现遍历全图的算法

输出:索引值

 1 #include <iostream>
 2 #include <climits>
 3 using namespace std;
 4 #define MAX 10
 5 
 6 int mat[MAX][MAX];
 7 int visited[MAX];
 8 int n=6;
 9 
10 void dfs(int row){
11     cout<<row<<'\t';
12     visited[row]=1;
13     for(int i=0; i<n; i++)
14     {
15         if(mat[row][i]==1 && !visited[i]){
16             dfs(i);
17         }
18     }
19     return;
20 }
21 
22 void travelallnodes()
23 {
24     cout<<"travel all nodes :"<<endl;
25     int partnum=1;
26     for(int i=0; i<n; i++){
27         if(!visited[i]){
28             cout<<"part "<<partnum++<<" :"<<endl;
29             dfs(i);
30             cout<<endl<<endl;
31         }
32     }
33     cout<<"---travel all nodes over !"<<endl;
34 }
35 
36 void init(){
37     for(int i=0; i<n; i++)
38         visited[i]=0;
39     for(int i=0; i<n; i++)
40         for(int j=0; j<n; j++)
41             mat[i][j]=INT_MAX;
42     mat[0][1]=1,mat[0][2]=1,mat[0][4]=1;
43     mat[1][0]=1,mat[1][3]=1;
44     mat[2][0]=1,mat[2][4]=1;
45     mat[3][1]=1;
46     mat[4][0]=1,mat[4][2]=1;
47     for(int i=0; i<n; i++)
48         mat[i][i]=0;
49 }
50 
51 int main()
52 {
53     init();
54     travelallnodes();
55 
56     dfs(5);
57     return 0;
58 }

 

猜你喜欢

转载自www.cnblogs.com/guoyujiang/p/11967196.html