SDUT OJ 2140 图结构练习——判断给定图是否存在合法拓扑序列

来源:互联网 发布:基于python.的毕业设计 编辑:程序博客网 时间:2024/05/22 06:41

图结构练习——判断给定图是否存在合法拓扑序列

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

 给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。

输入

 输入包含多组,每组格式如下。
第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n<=10)
后面m行每行两个整数a b,表示从a到b有一条有向边。
 

输出

 若给定有向图存在合法拓扑序列,则输出YES;否则输出NO。
 

示例输入

1 02 21 22 1

示例输出

YESNO

提示

#include<bits/stdc++.h>using namespace std;int p[20][20];int d[20];int n,m,u,v,k,flag;void Deal(){    for(int i=1;i<=n;i++)    {        flag=0;        for(int j=1;j<=n;j++)        {            if(d[j]==0)            {                flag=1;                d[j]=-1;                for(int k=1;k<=n;k++)                {                    if(p[i][k])                    {                        d[k]--;                    }                }                break;            }        }        if(!flag)            break;    }    if(flag)        cout<<"YES"<<endl;    else        cout<<"NO"<<endl;}int main(){    while(cin>>n>>m)    {        memset(p,0,sizeof(p));        memset(d,0,sizeof(d));        for(int i=0;i<m;i++)        {            cin>>u>>v;            p[u][v]=1;            d[v]++;        }        Deal();    }    return 0;}


0 0
原创粉丝点击