Follows 10305.c (Total 53 lines):
/* @JUDGE_ID:4461XX 10305 C "Topological" */
/* A */
#include<stdio.h>
#include<string.h>
#include<limits.h>
#define MAX 100
void toDo( int n , int m )
{
int map[MAX][MAX] , connectToMe[MAX] ;
int a , b , tmpn , i , mini , first=1 ;
memset( map , 0 , sizeof( map ) ) ;
memset( connectToMe , 0 , sizeof( connectToMe ) ) ;
for( ; m ; --m ){
scanf( "%d %d" , &a , &b ) ;
map[a-1][b-1] = 1 ;
++connectToMe[b-1] ;
}
for( tmpn=n ; tmpn ; --tmpn ){
for( i=1,mini=0 ; i<n ; ++i )
if( !connectToMe[i] ){
mini = i ;
connectToMe[i] = INT_MAX ;
break ;
}
for( i=0 ; i<n ; ++i )
if( map[mini][i] ) --connectToMe[i] ;
if( first ){
printf( "%d" , mini+1 ) ;
first = 0 ;
}
else printf( " %d" , mini+1 ) ;
}
}
int main( void )
{
int m , n ;
while( scanf( "%d %d" , &n , &m ) ){
if( !n&&!m ) break ;
toDo( n , m ) ;
putchar( '\n' ) ;
}
return 0 ;
}
Back to statistics
Ya-Lin Huang (C)
huangyl@gmail.com