Pagini recente » Cod sursa (job #211573) | Cod sursa (job #2478212) | Cod sursa (job #1383761) | Cod sursa (job #1922704) | Cod sursa (job #2576187)
#include <fstream>
using namespace std;
const int N = 50002;
const int M = 100002;
int lst[N], vf[2*M], urm[2*M], nr;
bool viz[N];
int topostack[N], svf;
void adauga (int x, int y) {
vf[++nr] = y;
urm[nr] = lst[x];
lst[x] = nr;
}
void dfs (int x) {
viz[x] = true;
for ( int p = lst[x]; p; p = urm[p] ) {
int y = vf[p];
if ( !viz[y] )
dfs(y);
}
topostack[svf++] = x;
}
int main () {
ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");
int n, m, x, y;
fin>>n>>m;
for ( int i = 0; i < m; i++ ) {
fin>>x>>y;
adauga(x,y);
}
for ( int i = 1; i <= n; i++ ) {
if (!viz[i])
dfs(i);
}
for ( int i = n-1; i >= 0; i-- ) {
fout<<topostack[i]<<" ";
}
return 0;
}