zoukankan      html  css  js  c++  java
  • 杭电1269----迷宫城堡

     1 //tarjan裸题
     2 #include <iostream>
     3 #include <vector>
     4 #include <stack>
     5 #include <cstring>
     6 using namespace std;
     7 const int maxn = 1e4+5;
     8 stack<int> s;
     9 vector<int> v[maxn];
    10 int dfn[maxn],low[maxn],ins[maxn];
    11 int ant,cnt;
    12 int tarjan(int n)
    13 {
    14     dfn[n] = low[n] = ++ant;
    15     s.push(n);
    16     for(int i = 0; i < v[n].size(); ++i)
    17     {
    18         int x = v[n][i];
    19         if(!dfn[x])
    20             low[n] = min(low[n],tarjan(x));
    21         else if(!ins[x])
    22             low[n] = min(low[n],dfn[x]);
    23     }
    24     if(low[n] == dfn[n])
    25     {
    26         ++cnt;
    27         int x;
    28         do
    29         {
    30             x = s.top(); s.pop();
    31             ins[x] = cnt;
    32         }while(x != n);
    33     }
    34     return low[n];
    35 }
    36 int main()
    37 {
    38     int n,m,i;
    39     while(cin >> n >> m && n+m)
    40     {
    41         ant = cnt = 0;
    42         memset(dfn,0,sizeof dfn);
    43         memset(low,0,sizeof low);
    44         memset(ins,0,sizeof ins);
    45         for(i = 0; i <= n; ++i)
    46             v[i].clear();
    47         while(m--)
    48         {
    49             int x,y;
    50             cin >> x >> y;
    51             v[x].push_back(y);
    52         }
    53         tarjan(1);
    54         for(i = 1; i < n; ++i)
    55             if(ins[i] != ins[i+1])
    56                 break;
    57         if(i == n)
    58             cout << "Yes" << endl;
    59         else
    60             cout << "No" << endl;
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    multiprocessing模块
    socket&socketserver网络编程
    collections模块
    socket模块
    网络基础知识
    迭代器,生成器,列表推导式,生成器表达式
    logging模块
    Module
    页面中公用的全选按钮,单选按钮组件的编写
    ajax
  • 原文地址:https://www.cnblogs.com/qq188380780/p/7305756.html
Copyright © 2011-2022 走看看