hdu 3342 拓扑排序

来源:互联网 发布:剑三高冷成男捏脸数据 编辑:程序博客网 时间:2024/06/02 05:31

当有环出现就是NO

也就是拓扑中的出现有一堆元素无入度=0的情况


#include<iostream>#include<cstdio>using namespace std;struct node{    int d;    int tot;    int mem[15];                //这里有待优化,如果子节点多了,就不好处理}e[105];int top(int n){    int k=0,flage;    while(k<n)    {        flage=0;        for(int i=1;i<=n;i++)        {            if(e[i].d==0)            {                e[i].d--;                for(int  j=0;j<e[i].tot;j++)                {                    e[e[i].mem[j]].d--;                }                flage=1;                               //找到入度为0的元素                k++;            }        }        if(flage==0)                                   //也就是说元素还有剩,但是剩下的成环            return 0;    }    return 1;}int main(){    int n,m,a,b;    while(scanf("%d %d",&n,&m),n)    {        for(int i=0;i<=101;i++)            e[i].d=e[i].tot=0;        for(int i=1;i<=m;i++)        {            scanf("%d %d",&a,&b);            a++;b++;            e[b].d++;            e[a].mem[e[a].tot++]=b;        }        int flage=top(n);        if(flage)        {            printf("YES\n");        }        else            printf("NO\n");    }    return 0;}


0 0
原创粉丝点击