Pagini recente » Cod sursa (job #62591) | Cod sursa (job #2236296) | Cod sursa (job #298429) | Cod sursa (job #294532) | Cod sursa (job #2571949)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
vector < int> L[50001];
int n, m, Viz[50001];
int fin[50001];
int p[50001];
int timp;
stack <int> s;
bool Compare(int a, int b)
{ if(a>b )
return 1;
else return 0;
}
void Citire()
{int i, x, y;
f>>n>>m;
for(i=1;i<=m;i++)
{ f>>x>>y;
L[x].push_back(y);
}
for(i=1;i<=n;i++)
p[i]=i;
}
void DFS(int nod)
{ int j,vec;
Viz[nod]=1; timp++;
for(j=0;j<L[nod].size();j++)
{vec=L[nod][j];
if(Viz[vec]==0)
DFS(vec);
}
fin[nod] =++timp;
//cout <<nod<<" ";
s.push(nod);
}
void Afisare()
{ int i;
while(!s.empty())
{
g <<s.top()<<" ";
s.pop();
}
}
int main()
{ int i;
Citire();
for(i=1;i<=n;i++)
if(Viz[i]==0)
DFS(i);
Afisare();
f.close();
g.close();
return 0;
}