Pagini recente » Cod sursa (job #2269088) | Cod sursa (job #2866694) | Cod sursa (job #1376978) | Cod sursa (job #1307045) | Cod sursa (job #1563251)
#include<stdio.h>
using namespace std;
const int N = 50005, M = 100005;
int vf[M], lst[N], urm[M], nr = 0, viz[N], sol[N];
void adauga (int x, int y)
{
vf[++nr] = y;
urm[nr] = lst[x];
lst[x] = nr;
}
void dfs (int x)
{
int p, y;
viz[x] = true;
p = lst[x];
while (p != 0)
{
y = vf[p];
if (viz[y] == false)
dfs (y);
p = urm[p];
}
sol[++nr] = 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);
}
nr = 0;
for (i = 1; i <= n; i++)
if (viz[i] == false)
dfs (i);
for (i = n; i >= 1; i--)
fprintf (out, "%d ", sol[i]);
return 0;
}