邻接矩阵:
#include<iostream> using namespace std; const int maxn=100; class Graph { struct matgraph { int n; int edges[maxn][maxn]; }; matgraph g; int visited[maxn]={0}; public: void make_matgraph() { cin>>g.n; for(int i=0;i<g.n;i++) for(int j=0;j<g.n;j++) cin>>g.edges[i][j]; } void dfs(int v) { cout<<v<<" "; visited[v]++; for(int i=0;i<g.n;i++) if(!visited[i]&&g.edges[v][i])//节点是否访问 dfs(i); } }; int main()//只能输出一次,第二次由于visited改变就不行了 { Graph g; g.make_matgraph(); g.dfs(0); cout<<endl; return 0; }