Pagini recente » Cod sursa (job #261219) | Cod sursa (job #2565548) | Cod sursa (job #500563) | Cod sursa (job #2404334) | Cod sursa (job #1874721)
#include<stdio.h>
using namespace std;
const int N = 100005, M = 50005;
int vf[M], lst[N], urm[M], nr, sol[N], ct;
bool viz[N];
void adauga (int x, int y)
{
vf[++nr] = y;
urm[nr] = lst[x];
lst[x] = nr;
}
void dfs (int x)
{
int y, p;
viz[x] = true;
p = lst[x];
while (p != 0)
{
y = vf[p];
if (viz[y] == false)
dfs(y);
p = urm[p];
}
sol[++ct] = x;
}
int main ()
{
FILE *in, *out;
in = fopen ("sortaret.in", "r");
out = fopen ("sortaret.out", "w");
int n, m;
fscanf (in, "%d%d", &n, &m);
int i, x, y;
for (i = 1; i <= m; i++)
{
fscanf (in, "%d%d", &x, &y);
adauga (x, y);
}
for (i = 1; i <= n; i++)
if (!viz[i])
dfs(i);
for (i = n; i >= 1; i--)
fprintf (out, "%d ", sol[i]);
return 0;
}