zoukankan      html  css  js  c++  java
  • HDU3342Legal or Not 拓扑排序

      有向图判断是否成环  如果是环输出NO  

    只要入度为0的点的个数 等于 总的点的个数则无环

    #include<bits/stdc++.h>
    using namespace std;
    //input by bxd
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define RI(n) scanf("%d",&(n))
    #define RII(n,m) scanf("%d%d",&n,&m)
    #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
    #define RS(s) scanf("%s",s);
    #define LL long long
    #define REP(i,N)  for(int i=0;i<(N);i++)
    #define CLR(A,v)  memset(A,v,sizeof A)
    //////////////////////////////////
    #define N  200
    int in[N];
    vector<int>edge[N];
    int vis[N][N];
    
    int main()
    {
        int n,m;
        while(RII(n,m)==2&&n&&m)
        {
            while(m--)
            {
                int a,b;
                RII(a,b);
                if(!vis[a][b])
                {
                vis[a][b]=1;
                in[b]++;
                edge[a].push_back(b);
                }
            }
            queue<int>q;
            rep(i,0,n-1)
            if(!in[i])q.push(i);//后来还要取出来 所以这里cnt不用变
            int cnt=0;//计算入读为0的点
            while(!q.empty())
            {
                int u=q.front();q.pop();
                cnt++;
                if(edge[u].size())
                rep(i,0,edge[u].size()-1)
                {
                    int v=edge[u][i];
    
                    in[v]--;
                    if(in[v]==0)q.push(v);
                }
            }
            if(cnt==n)printf("YES
    ");
            else  printf("NO
    ");
            CLR(vis,0);
            rep(i,0,n-1)
            in[i]=0,edge[i].clear();
        }
        return 0;
    }
  • 相关阅读:
    tushare学习
    TVP-VAR模型
    时间序列分析
    python tusahre使用
    金融大讲堂-笔记
    多元GARCH模型
    方差与协方差
    代码生成器,项目更新第一版,mybatis-plus
    Springboot手动搭建项目——配置mybatis tk框架
    java基础,集合,HashMap,源码解析
  • 原文地址:https://www.cnblogs.com/bxd123/p/10558449.html
Copyright © 2011-2022 走看看