#include <bits/stdc++.h> // 一个图是否存在合法拓扑序列的充要条件: 有向,无环。
using namespace std;
int visit[1100];
int ma[1100][1100];
int q[1200];
int n,m,flag;
void BFS()
{
int in,out;
in=out=0;
visit[1]=1;
q[in++]=1;
while(in>out)
{
int k=q[out++];
for(int i=1;i<=n;i++)
{
if(ma[k][i]==1)
{
if(visit[i]==1)
{
flag=0;
break;
}
else
{
visit[i]=1;
q[in++]=i;
}
}
}
}
if(flag)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
int main()
{
while(cin>>n>>m)
{
flag=1;
memset(ma,0,sizeof(ma));
memset(visit,0,sizeof(visit));
int a,b;
while(m--)
{
cin>>a>>b;
ma[a][b]=1;
}
BFS();
}
return 0;
}
**这个代码明明是错的,但OJ上是对的**
数据结构实验之图论十:判断给定图是否存在合法拓扑序列
最新推荐文章于 2019-11-07 17:48:13 发布