Pagini recente » Diferente pentru utilizator/mikeys intre reviziile 3 si 6 | Monitorul de evaluare | Diferente pentru utilizator/mikeys intre reviziile 4 si 6 | Atasamentele paginii Profil Mikeys | Cod sursa (job #1036719)
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#define Nmax 50000+5
using namespace std;
int n,m;
vector<int> L[Nmax];
stack<int> S;
int viz[Nmax];
void citire()
{
scanf("%d%d",&n,&m);
for (int i=1; i<=m; i++)
{
int x,y;
scanf("%d%d",&x,&y);
L[x].push_back(y);
}
}
void dfs(int vf)
{
viz[vf]=1;
for (int i=0; i<L[vf].size(); i++)
{
int x=L[vf][i];
if (viz[x] == 0)
dfs(x);
}
if (viz[vf]==1)
{
viz[vf]=2;
S.push(vf);
}
}
void rezolvare()
{
for (int i=1; i<=n; i++)
if (viz[i] == 0)
dfs(i);
}
void afisare()
{
while(!S.empty())
{
int x=S.top();
printf("%d ",x);
S.pop();
}
}
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
citire();
rezolvare();
afisare();
return 0;
}