Pagini recente » Cod sursa (job #329479) | Cod sursa (job #2553267) | Cod sursa (job #318771) | Cod sursa (job #3289221) | Cod sursa (job #2769368)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");
const int maxVal = 50001;
struct nod
{
int info;
nod * next;
}* v[maxVal];
void adaugare (int x, int y)
{
nod * t = new nod;
t -> info = y;
t -> next = v[x];
v[x] = t;
}
void dfs (int x, int stiva[], int &h, int vizitat[])
{
vizitat[x] = 1;
nod * t = v[x];
while (t)
{
int nod_curent = t -> info;
if (vizitat[nod_curent] == 0)
dfs (nod_curent, stiva, h, vizitat);
t = t -> next;
}
stiva[++h] = x;
}
int main ()
{
int n, m, grad_intern[maxVal] = {0};
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
int x, y;
fin >> x >> y;
grad_intern[y]++;
adaugare (x, y);
}
int stiva[maxVal], h = 0, vizitat[maxVal]={0};
for (int i = 1; i <= n; i++)
{
if (grad_intern[i] == 0 && vizitat[i] == 0)
{
dfs(i, stiva, h, vizitat);
}
}
while (h)
{
fout << stiva[h] << ' ';
h--;
}
return 0;
}