Pagini recente » Rezultatele filtrării | Borderou de evaluare (job #478) | Cod sursa (job #2958859) | Rezultatele filtrării | Cod sursa (job #2533484)
#include <iostream>
#include<fstream>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
stack<int>rez;
vector<int>graf[50001];
bool viz[50001];
int n, m;
void afisare_vecini();
void parcurgere(int nod){
viz[nod] = true;
for(int i = 0; i< graf[nod].size(); ++i){
int vecin = graf[nod][i];
if(!viz[vecin])
parcurgere(vecin);
}
rez.push(nod);
}
int main()
{
in>>n>>m;
while(m--){
int a, b;
in>>a>>b;
graf[a].push_back(b);
}
//afisare_vecini();
for(int nod = 1; nod <= n; ++nod){
if(viz[nod] == false){
parcurgere(nod);
}
}
while(!rez.empty()){
out<<rez.top() <<' ';
rez.pop();
}
return 0;
}
/*void afisare_vecini(){
for(int i = 1; i<=n; ++i){
out<<i<<"-";
for(int j = 0; j < graf[i].size(); ++j){
out<<graf[i][j]<<' ';
}
out<<'\n';
}
out<<'\n';
}*/