Pagini recente » Cod sursa (job #1161151) | Cod sursa (job #2735783) | Cod sursa (job #2456939) | Cod sursa (job #1944806) | Cod sursa (job #443712)
Cod sursa(job #443712)
#include <fstream>
#include <vector>
const int NMAX = 50005;
const char* in = "sortaret.in";
const char* out = "sortaret.out";
using namespace std;
vector <int> L[NMAX];
int N, M, grad[NMAX], Q[NMAX];
int main (void)
{
freopen ( in, "r", stdin );
freopen ( out, "w", stdout );
scanf ("%d%d", &N, &M);
int i, X, Y;
vector <int>::iterator it;
for ( ; M; --M)
{
scanf ( "%d%d", &X, &Y );
L[X].push_back ( Y );
grad[Y]++;
}
for (i = 1; i <= N; ++i)
if (!grad[i]) Q[++Q[0]] = i;
for (i = 1; i <= N; ++i)
{
for (it = L[Q[i]].begin(); it != L[Q[i]].end(); ++it )
{
grad[*it]--;
if ( grad[*it] == 0 ) Q[++Q[0]] = *it;
}
}
for ( i = 1; i <= N; ++i)
printf ( "%d ", Q[i] );
return 0;
}