zoukankan      html  css  js  c++  java
  • hdu 1269

    强连通分量  基础题  比较简单 第一次使用链式结构 纪念一下

    #include<iostream>
    using namespace std;
    struct G
    {
        int dest;
        G *next;
    };
    int n,m;
    G *ga[10001];
    G *gt[10001];
    int path[10001];
    int vis[10001];
    void addedge(G *g[],int i,int j)
    {
        G *l=new G;
        l->dest=j;
        l->next=g[i];//注意g初始化为0
        g[i]=l;
    }
    void dfsa(int u)
    {
        G *l=ga[u];
        if(!vis[u])
        {
            vis[u]=1;
            for(l;l!=NULL;l=l->next)
                dfsa(l->dest);
            path[0]++;
            path[path[0]]=u;
        }
    }
    void dfst(int u)
    {
        G *l=gt[u];
        if(!vis[u])
        {
            vis[u]=1;
            for(l;l!=NULL;l=l->next)
                dfst(l->dest);
        }
    }
    void k()
    {
        int i;
        path[0]=0;
        memset(vis,0,sizeof(vis));
        //搜索原图
        for(i=1;i<=n;i++)
        {
            if(!vis[i])
                dfsa(i);
        }
        memset(vis,0,sizeof(vis));
        int sum=0;
        for(i=n;i>=1;i--)
        {
            if(!vis[path[i]])
            {
                sum++;
                dfst(path[i]);
            }
        }
        if(sum>1)
            printf("No ");
        else
            printf("Yes ");
    }
    int main()
    {
        int a,b;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            if(n==0&&m==0)
                break;
            for(int i=1;i<=n;i++)
                ga[i]=gt[i]=NULL;
            while(m--)
            {
                scanf("%d%d",&a,&b);
                addedge(ga,a,b);
                addedge(gt,b,a);
            }
            k();
        }
        return 0;
    }



  • 相关阅读:
    互联网协议入门(一)(转)
    程序员的自我修养——操作系统篇(转)
    程序员的自我修养(2)——计算机网络(转)
    里氏替换原则
    Windows Phone 自学笔记 : ApplicationBar
    如何写好代码
    C# 通过操作注册表控制系统 (更新)
    优秀PPT 设计的十大秘诀
    设计模式学习--面向对象的5条设计原则
    SOLID (面向对象设计) From 维基百科
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3702159.html
Copyright © 2011-2022 走看看