Pagini recente » Cod sursa (job #148964) | Diferente pentru runda/redsnow_2 intre reviziile 31 si 44 | Istoria paginii runda/serutcurts_atad | Arhiva de probleme | Cod sursa (job #2382129)
#include <iostream>
#include <vector>
#include <stack>
#include <fstream>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector <int> graf[50005];
stack <int> top;
int n,m,vizitat[50005];
void citire(){
fin>>n>>m;
int i,j,l;
for(l=1;l<=m;l++){
fin>>i>>j;
graf[i].push_back(j);
}
}
void dfs(int nod){
vizitat[nod]=true;
for(unsigned int i=0;i<graf[nod].size();i++)
if(!vizitat[graf[nod][i]])
dfs(graf[nod][i]);
top.push(nod);
}
int main(){
citire();
for(int i=1;i<=n;i++)
if(!vizitat[i])
dfs(i);
while(!top.empty()){
fout << top.top()<< " ";
top.pop();
}
return 0;
}