标签:
Description
Input
Output
Sample Input
3 2 3 1 2 1 3 3 3 2 2 1 1 3
Sample Output
YES NO
拓扑排序判断有无环
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std ;
int in[120] ;
int Map[120][120] ;
queue <int> que ;
int main()
{
int n , m , u , v , i ;
while( scanf("%d %d", &n, &m) != EOF )
{
while( !que.empty() )
que.pop() ;
memset(in,0,sizeof(in)) ;
memset(Map,0,sizeof(Map)) ;
while(m--)
{
scanf("%d %d", &u, &v) ;
Map[v][u]++ ;
in[u]++ ;
}
for(i = 1 ; i <= n ; i++)
if( in[i] == 0 )
que.push(i) ;
while( !que.empty() )
{
u = que.front() ;
que.pop() ;
for(i = 1 ; i <= n ; i++)
{
if( Map[u][i] != 0 )
{
in[i] -= Map[u][i] ;
Map[u][i] = 0 ;
if( in[i] == 0 )
que.push(i) ;
}
}
}
for(i = 1 ; i <= n ; i++)
if( in[i] )
break ;
if( i <= n )
printf("NO\n") ;
else
printf("YES\n") ;
}
return 0;
}
hdu5154--Harry and Magical Computer(拓扑排序)
标签:
原文地址:http://blog.csdn.net/winddreams/article/details/42531259