改写:去除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<<' ';
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 }