图的深度优先遍历类似于二叉树的前序遍历,利用递归的思想,遍历所有的顶点。
代码如下:
#include <bits/stdc++.h> using namespace std; int v[110]; int arc[110][110]; int flag; void DFS(int i,int k){/*利用递归的思想,深度优先遍历图中的顶点*/ if(!flag){ cout<<i; flag=1; } else{ cout<<" "<<i; } v[i]=1; for(int j=0;j<k;j++){ if(arc[i][j]&&!v[j]) DFS(j,k); } } int main(){ int n,m,k,u,b,i; cin>>n; while(n--){ memset(v,0,sizeof(v)); memset(arc,0,sizeof(arc)); cin>>k>>m; for(i=0;i<m;i++){/*建立邻接矩阵来存储图的各个顶点*/ cin>>u>>b; arc[u][b]=arc[b][u]=1; } flag=0; DFS(0,k); cout<<endl; } return 0; }
转载请注明原文地址: https://ju.6miu.com/read-1307398.html