zoukankan      html  css  js  c++  java
  • 图的遍历 之 深搜dfs

    DFS 遍历
    深度优先搜索是一个递归过程,有回退过程。
    对一个无向连通图,在访问图中某一起始顶点u 后,由u 出发,访问它的某一邻接顶点v1;再从v1 出发,访问与v1 邻接但还没有访问过的顶点v2;然后再从v2 出发,进行类似的访问;;如此进行下去,直至到达所有邻接顶点都被访问过的某个顶点x 为止;接着,回退一步,回退到前一次刚访问过的顶点,看是否还有其它没有被访问过的邻接顶点,如果有,则访问此顶点,之后再从此顶点出发,进行与前述类似的访问;如果没有,就再回退一步进行类似的访问。
    重复上述过程,直到该连通图中所有顶点都被访问过为止。
    深搜过程:
    深搜算法实现:
    代码如下:
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 char maps[10][11];
     5 bool vis[1000];
     6 int q,m;
     7 void dfs(int a){
     8     vis[a]=1;
     9     if(a<q)
    10     printf("%c --> ",a+64);
    11      else printf("%c",a+64);
    12     for(int i=1;i<=q;i++)
    13     {
    14         if(maps[a][i]==1&&vis[i]==0)
    15         dfs(i);
    16     }
    17 }
    18 int main()
    19 {
    20     
    21     char a,b;
    22     cin>>q>>m;
    23     for(int i=1;i<=m;i++)
    24     {
    25         cin>>a>>b;
    26         maps[a-64][b-64]=1;
    27         maps[b-64][a-64]=1;
    28     }
    29     dfs(1);
    30 }
  • 相关阅读:
    day16(链表中倒数第k个结点)
    day15(C++格式化输出数字)
    day14(调整数组顺序使奇数位于偶数前面 )
    day13(数值的整数次)
    day12(二进制中1的个数)
    day11(矩形覆盖)
    day10(跳台阶)
    hadoop 又一次环境搭建
    Hive 学习
    hadoop -工具合集
  • 原文地址:https://www.cnblogs.com/sssy/p/6682520.html
Copyright © 2011-2022 走看看