改写:去除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 }
原文地址:https://www.cnblogs.com/guoyujiang/p/11967196.html
时间: 2024-11-09 04:52:30