zoukankan      html  css  js  c++  java
  • 强连通图 hdu 1269

    ***强连通图概念:从任意一点都可以到达任一点***

    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<vector>
    using namespace std;
    #define N 10005
    
    int n, m;
    int dfn[N], low[N];
    int Stack[N], InStack[N];
    int Time, top, cnt, bloks;
    
    vector<vector<int> > G;
    
    void Init()
    {
        G.clear();
        G.resize(n+5);
        memset(dfn, 0, sizeof(dfn));
        memset(low, 0, sizeof(low));
        memset(Stack, 0, sizeof(Stack));
        memset(InStack, 0, sizeof(InStack));
        Time=top=cnt=bloks=0;
    }
    
    void Tarjan(int u)
    {
        dfn[u]=low[u]=++Time;
        Stack[top++]=u;
        InStack[u]=1;
        int len=G[u].size(), v;
    
        for(int i=0; i<len; i++)
        {
            v=G[u][i];
            if(!dfn[v])
            {
                Tarjan(v);
                low[u]=min(low[u], low[v]);
            }
            else if(InStack[v])
            {
                low[u]=min(low[u], dfn[v]);
            }
        }
        if(dfn[u]==low[u])
        {
            do
            {
                cnt++;
                v=Stack[--top];
                InStack[v]=0;
            }while(u!=v);
            bloks++;
        }
    }
    
    int main()
    {
        while(scanf("%d%d", &n, &m), n+m)
        {
            Init();
            int a, b;
            while(m--)
            {
                scanf("%d%d", &a, &b);
                G[a].push_back(b);
            }
    
            Tarjan(1);
    
            if(cnt==n&&bloks==1)
                printf("Yes
    ");
            else
                printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    C++的Socket的使用源码
    一些程序技术简介
    VMware安装步骤既常见问题
    操作系统和环境准备
    第一章-硬件组成
    python之面向对象
    指向方法之委托(一)
    Django之URL控制器(路由层)
    python之字符编码(四)
    python之字符编码(三)
  • 原文地址:https://www.cnblogs.com/9968jie/p/5669934.html
Copyright © 2011-2022 走看看