zoukankan      html  css  js  c++  java
  • HDU 3342 Legal or Not【拓扑排序】

    题意:给出n,m,人的编号为 0到n-1,再给出m个关系,问能不能够进行拓扑排序

    #include<iostream>  
    #include<cstdio>  
    #include<cstring>  
    #include<algorithm>  
    using namespace std;
    int indegree[1005],queue[1005],head[1005];
    struct Edge
    {
    	int to;
    	int next;
    } edge[1005];
    int main()
    {
    	int n,m,i,j,k,iq,a,b;
    	while(scanf("%d %d",&n,&m)!=EOF&&n&&m)
    	{
    		memset(head,-1,sizeof(head));
    		memset(indegree,0,sizeof(indegree));
    		for(i=1;i<=m;i++)
    		{
    			scanf("%d %d",&a,&b);
    			edge[i].to=b;
    			edge[i].next=head[a];
    			head[a]=i;
    			indegree[b]++;			
    		}
    		iq=0;
    		for(i=0;i<n;i++)
    		{
    			if(indegree[i]==0)
    			{
    				queue[iq++]=i;
    			}
    		}
    		
    		for(i=0;i<iq;i++)
    		{
    			for(k=head[queue[i]];k!=-1;k=edge[k].next)
    			{
    				indegree[edge[k].to]--;
    				if(indegree[edge[k].to]==0)
    				{
    					queue[iq++]=edge[k].to;					
    				}
    			}
    		}
    		if(iq==n) printf("YES
    ");
    		else
    		printf("NO
    ");	
    	}
    }
    

      

  • 相关阅读:
    第十次作业
    java第九次作业
    优秀的计算机编程类博客 和 文章
    SQLAlchemy使用总结
    Go Web
    beego
    项目注意事项
    爬虫
    Linux笔记
    计算机英语
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4278372.html
Copyright © 2011-2022 走看看