zoukankan      html  css  js  c++  java
  • 图算法(一)——基本图算法(BFS,DFS及其应用)(2)

    2)DFS

    深度优先搜索总是对最近发现的节点v的出发边进行搜索,直到该节点的所有出发边都被发现

    一旦节点v的所有出发边都被发现,搜索回溯到v的前驱结点进行

    实现细节:时间戳

    每一个结点有一个发现时间和完成时间

    DFS后原图的前驱子图构成一个深度优先森林

     1 #include<iostream>
     2 using namespace std;
     3 #define NIL -1
     4 int g[1000][1000];
     5 int n;
     6 struct Node
     7 {
     8     int color;
     9     int d;
    10     int f;
    11     int pi;
    12 }t[1000];
    13 int time;
    14 
    15 void DFS();
    16 void DFS_VISIT(int u);
    17 
    18 void DFS()
    19 {
    20     for (int i=0;i<n;i++)
    21     {
    22         t[i].color = 0;
    23         t[i].pi = NIL;
    24     }
    25     time=1;
    26     for (int i=0;i<n;i++)
    27     {
    28         if (t[i].color == 0)
    29             DFS_VISIT(i);
    30     }
    31 }
    32 void DFS_VISIT(int u)
    33 {
    34     t[u].d = time++;
    35     t[u].color = 1;            /*****/
    36     for (int v=0;v<n;v++)
    37     {
    38         if ((g[u][v] == 1)&&(t[v].color == 0))
    39         {
    40             t[v].pi = u;
    41             DFS_VISIT(v);
    42         }
    43     }
    44     t[u].f = time++;
    45 }
    46 /*
    47 int main()
    48 {
    49     while (cin>>n)
    50     {
    51         for (int i=0;i<n;i++)
    52         {
    53             for (int j=0;j<n;j++)
    54             {
    55                 cin>>g[i][j];
    56             }
    57         }
    58         DFS();
    59         for (int i=0;i<n;i++)
    60             cout<<i<<" "<<t[i].d<<" "<<t[i].f<<" "<<endl;
    61     }
    62     return 0;
    63 }
    64 */
  • 相关阅读:
    什么是tomcat集群?
    cmd黑客入侵命令大全
    Linix基本命令
    Windows CMD命令大全
    python 函数1
    Python 集合(set)使用
    python 数据字典应用
    python 数据运算
    python 数据类型(元组(不可变列表),字符串
    python 数据类型(列表)学习笔记
  • 原文地址:https://www.cnblogs.com/giddens/p/4125083.html
Copyright © 2011-2022 走看看