Pagini recente » Cod sursa (job #761191) | Cod sursa (job #1516396) | Cod sursa (job #920089) | Istoria paginii runda/pregg/clasament | Cod sursa (job #316829)
Cod sursa(job #316829)
# include <algorithm>
using namespace std;
# define DIM 1 << 16
struct graf {
int nod;
graf *urm;
};
int n, m, c[ DIM ], grad[ DIM ];
graf *lst[ DIM ];
void add ( int x, int y ) {
graf *p = new graf;
p->nod = y;
p->urm = lst[ x ];
lst[ x ] = p;
}
void read () {
int i, x, y;
scanf ( "%d%d", &n, &m );
for ( i = 0; i < m; ++ i ) {
scanf ( "%d%d", &x, &y );
++ grad[ y ];
add ( x, y );
}
}
void solve () {
int i, st, dr;
graf *p;
dr = -1;
for ( i = 1; i <= n; ++ i )
if ( !grad[ i ] )
c[ ++ dr ] = i;
for ( st = 0; st <= dr; ++ st ) {
printf ( "%d ", c[ st ] );
for ( p = lst[ c[ st ] ]; p; p = p->urm ) {
-- grad[ p->nod ];
if ( !grad[ p->nod ] )
c[ ++ dr ] = p->nod;
}
}
}
int main () {
freopen ( "sortaret.in", "r", stdin );
freopen ( "sortaret.out", "w", stdout );
read ();
solve ();
return 0;
}