Pagini recente » Cod sursa (job #135350) | Cod sursa (job #5381) | Cod sursa (job #1685668) | Cod sursa (job #1256548) | Cod sursa (job #1586690)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
const int N = 50003;
const int M = 100003;
int nr, n, m, p, lst[N], vf[M], urm[M], sol[N], a[N], b[N], s;
void adauga( int x, int y )
{
nr++;
vf[nr] = y;
urm[nr] = lst[x];
lst[x] = nr;
}
int main()
{
int i, x, y, k;
in >> n >> m;
for ( i = 1; i <= m; i++ )
{
in >> x >> y;
a[y]++;
adauga(x,y);
}
int p = 1, u = 0;
for ( i = 1; i <= n; i++ )
if ( a[i] == 0 )
{
u++;
b[u] = i;
}
while( p <= u )
{
x = b[p];
k = lst[x];
while(k)
{
y = vf[k];
a[y]--;
if ( a[y] == 0 )
{
u++;
b[u] = y;
}
k = urm[k];
}
p++;
}
for ( i = 1; i <= n; i++ )
out << b[i]<<' ';
return 0;
}