zoukankan      html  css  js  c++  java
  • 学习笔记--图论DFS,联通分量,时间戳

      1 #include<iostream>
      2 #include<vector>
      3 using namespace std;
      4 
      5 const int maxn=12;
      6 
      7 int vis[maxn];
      8 
      9 vector<int> G[maxn];
     10 
     11 
     12 int dfs_clock;
     13 int pre[maxn];
     14 int post[maxn];
     15 int cc[maxn];
     16 int current_cc=0;
     17 void dfs(int u)
     18 {
     19   //pre
     20 
     21    vis[u]=1;
     22    pre[u]=++dfs_clock;
     23    cc[u]=current_cc;
     24    for(int i=0;i<G[u].size();i++)
     25    {
     26        int v=G[u][i];
     27       if(!vis[v]) dfs(v);
     28 
     29    }
     30 
     31    post[u]=++dfs_clock;
     32   //post
     33 }
     34 
     35 void init()
     36 {
     37   for(int i=0;i<12;i++)
     38     vis[i]=0;
     39 
     40   G[0].push_back(1);
     41   G[0].push_back(4);
     42 
     43   G[1].push_back(0);
     44 
     45   G[2].push_back(3);
     46   G[2].push_back(6);
     47   G[2].push_back(7);
     48 
     49 
     50   G[3].push_back(2);
     51   G[3].push_back(7);
     52 
     53 
     54   G[4].push_back(0);
     55   G[4].push_back(8);
     56   G[4].push_back(9);
     57 
     58 
     59   G[6].push_back(2);
     60    G[6].push_back(7);
     61     G[6].push_back(10);
     62 
     63   G[7].push_back(2);
     64   G[7].push_back(3);
     65   G[7].push_back(6);
     66   G[7].push_back(10);
     67   G[7].push_back(11);
     68 
     69   G[8].push_back(4);
     70   G[8].push_back(9);
     71 
     72 
     73   G[9].push_back(4);
     74    G[9].push_back(8);
     75 
     76     G[10].push_back(6);
     77     G[10].push_back(7);
     78 
     79     G[11].push_back(7);
     80 
     81     dfs_clock=0;
     82 }
     83 
     84 
     85 int main()
     86 {
     87     init();
     88 
     89     for(int i=0;i<12;i++)
     90     {
     91        if(vis[i]==0)
     92        {
     93            current_cc++;
     94            dfs(i);
     95        }
     96 
     97     }
     98 
     99 
    100 
    101    //    dfs(0);
    102     for(int i=0;i<12;i++)
    103        cout<<i+1<<" "<<pre[i]<<" "<<post[i]<<" "<<cc[i]<<endl;
    104 
    105 
    106 }
  • 相关阅读:
    MySql中启用InnoDB数据引擎的方法
    云说的到底对不对,京东到底行不行?
    hibernate HQL查询的参数绑定
    MySQL到底能支持多大的数据量?
    C# RSA和Java RSA互通
    Log4j 2使用教程
    Log4j.properties配置详解
    JMX 基础Demo
    iBatis缓存实现源码分析-FIFO,LUR实现方法
    SqlMapClient 创建过程之SqlMapConfigParser源码走读
  • 原文地址:https://www.cnblogs.com/814jingqi/p/3247212.html
Copyright © 2011-2022 走看看