zoukankan      html  css  js  c++  java
  • HDU1269迷宫城堡

    Tarjan算法解读:https://www.byvoid.com/zht/blog/scc-tarjan
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<cstring>
     5 #include<vector>
     6 #include<stack>
     7 #include<algorithm>
     8 using namespace std;
     9  
    10 #define N 10003
    11 int dfn[N],low[N],ins[N],Time,num;//ins是否在栈里
    12 vector<int>gra[N];
    13 stack<int>sta;
    14  
    15 void Tarjan(int s)
    16 {
    17     dfn[s] = low[s] = ++Time;
    18     sta.push(s);
    19     ins[s] = 1;
    20     for(int i=0;i<gra[s].size();i++)
    21     {
    22         int k = gra[s][i];
    23         if(dfn[k] == 0){
    24             Tarjan(k);
    25             low[s] = min(low[s] ,low[k]);
    26         }
    27         if(dfn[k] != 0 && ins[k] == 1){
    28             low[s] = min(low[s] ,dfn[k]);//low[s] = min(low[s] ,low[k]);好像也是对的
    29         }
    30     }
    31     if(dfn[s] == low[s])
    32     {
    33         num++;
    34         while(!sta.empty())
    35         {
    36             int temp = sta.top();
    37             sta.pop();
    38             ins[temp] = 0;
    39             if(temp == s) break;
    40         }
    41     }
    42 }
    43  
    44 int main()
    45 {
    46     int n,m;
    47     while(scanf("%d%d",&n,&m)&&(n + m))
    48     {
    49         memset(dfn,0,sizeof(dfn));
    50         memset(ins,0,sizeof(ins));
    51         memset(low,0,sizeof(low));
    52         while(!sta.empty()) sta.pop();
    53         for(int i=1;i<=n;i++) gra[i].clear();
    54         int a,b;
    55         while(m--)
    56         {
    57             scanf("%d%d",&a,&b);
    58             gra[a].push_back(b);
    59         }
    60         num = Time = 0;
    61         for(int i=1;i<=n;i++)
    62         {
    63             if(dfn[i]==0) Tarjan(i);
    64         }
    65         if(num > 1) printf("No
    ");
    66         else printf("Yes
    ");
    67     }
    68 }
    View Code
  • 相关阅读:
    Linux环境变量文件
    Hadoop的ERROR: Attempting to operate on yarn resourcemanager as root的解决方法
    如何启用WSS3.0的匿名访问?
    Microsoft Windows SharePoint Services 3.0
    在sps页面中在新窗口打开文档
    wss3.0安装时的bug
    使用GROUP BY子句的规则
    8种Nosql数据库系统对比
    django学习
    Python socket编程
  • 原文地址:https://www.cnblogs.com/NWUACM/p/6849642.html
Copyright © 2011-2022 走看看