Pagini recente » Cod sursa (job #639809) | Cod sursa (job #1122624) | Cod sursa (job #451536) | Cod sursa (job #1754167) | Cod sursa (job #1347328)
#include <iostream>
#include <vector>
#include <stack>
#include <stdio.h>
#define Nmax 50005
using namespace std;
vector<int> G[Nmax];
stack<int> S;
int n, m;
int viz[Nmax];
void citire()
{
int x, y;
scanf("%d %d\n", &n, &m);
for(int i=1;i<=m;++i)
{
scanf("%d %d\n", &x, &y);
G[x].push_back(y);
}
}
void parcurgere(int vf)
{
viz[vf] = 1;
for(vector<int>::iterator it = G[vf].begin(); it != G[vf].end(); ++it)
{
if(!viz[*it])
parcurgere(*it);
}
S.push(vf);
}
void afisare()
{
while(!S.empty())
{
printf("%d ", S.top());
S.pop();
}
}
int main()
{
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
citire();
for(int i = 1;i<=n;++i)
if(!viz[i])
parcurgere(i);
afisare();
return 0;
}