图— dfs

邻接矩阵:

#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;  
}
View Code

猜你喜欢

转载自www.cnblogs.com/shenyuling/p/9991390.html