[2252] 줄 세우기

[2252] 줄 세우기

#include < stdio.h >

#include < algorithm >

#include < vector >

using namespace std ;

int n, m;

vector < int > adj[ 32001 ];

int a[ 32001 ];

int d[ 32001 ];

bool check[ 32001 ];

int main( void ) {

int i, j, cur = 0 , cnt = 0 ;

scanf ( "%d %d" , & n, & m);

for (i = 0 ; i < m; i + + ) {

int x, y;

scanf ( "%d %d" , & x, & y);

adj[x]. push_back (y);

d[y] + + ;

}

for (i = 1 ; i < = n; i + + ) {

for (j = 1 ; j < = n; j + + ) {

if (d[j] = = 0 & & check[j] = = false ) {

cur = j;

cnt + + ;

break ;

}

}

a[cnt] = cur;

check[cur] = true ;

for ( auto x : adj[cur]) {

d[x] - - ;

}

}

for (i = 1 ; i < = n; i + + )

printf ( "%d " , a[i]);

return 0 ;

}

from http://dizlet.tistory.com/30 by ccl(A) rewrite - 2021-08-31 01:26:09