dfs 深度优先搜索

来源:互联网 发布:蜂巢网络与无人机战争 编辑:程序博客网 时间:2024/05/01 12:23
#include "iostream"  #include "cstdio"#include "cstring"#define max 100  #define INF 99999  using namespace std;    int count,have_edge[max][max];  bool visited[max];  //图的存储(邻接矩阵)  void graph()  {     cout<<"请输入总结点数:"<<endl;cin>>count;     int m,n;      cout<<"请输入具有关系的各顶点,以“-1 -1 ”作为结束标志:"<<endl;       while(cin>>m>>n&&m!=-1&&n!=-1)      {    have_edge[m][n]=1;     have_edge[n][m]=1;} }     int firstadj(int v)  {      for(int w=1;w<=count;w++)          if(have_edge[v][w])              return w;      return 0;  }  int nextadj(int v,int w)  {      for(w=w+1;w<=count;w++)          if(have_edge[v][w])              return w;      return 0;  }int visite(int v){cout<<v<<" ";return 0;}void dfs(int v){int w;visite(v);visited[v]=true;w=firstadj(v);while(w!=0){if(!visited[w])    dfs(w);w=nextadj(v,w);}}void travel_dfs(){int i;memset(visited,0,sizeof(visited));for(int i=1;i<=count;i++)    if(!visited[i])        dfs(i);}int main(){graph();int v0;cout<<"请输入起始结点:"<<endl;cin>>v0; dfs(v0);return 0;}

1 0
原创粉丝点击