/* * Za uneti orijentisani graf, proveriti da li je aciklican. * Ako jeste, izvrsiti topolosko sortiranje. * Ako nije, stampati vezu koja je napravila ciklus. */ #include #include #define POVEZANO 1 #define NEPOVEZANO 0 #define NEDEFINISANO -1 int time = 0; void dfsVisit() { // TODO } int main() { int n, l; scanf("%d%d", &n, &l ); int **graf = ( int ** ) malloc( n * sizeof( int * ) ); for ( int i = 0; i < n; i ++ ) graf[ i ] = ( int * ) malloc( n * sizeof( int ) ); int *d = ( int * ) malloc( n * sizeof( int ) ); int *f = ( int * ) malloc( n * sizeof( int ) ); int *topsort = ( int * ) malloc( n * sizeof( int ) ); for ( int i = 0; i < n; i ++ ) for ( int j = 0; j < n; j ++ ) graf[ i ][ j ] = NEPOVEZANO; for ( int i = 0; i < l; i ++ ) { int u, v; scanf("%d%d", &u, &v ); graf[ u ][ v ] = POVEZANO; // Za neorijentisan graf dodati graf[v][u] = POVEZANO; } for ( int i = 0; i < n; i ++ ) d[ i ] = f[ i ] = NEDEFINISANO; // TODO }