Pagini recente » Cod sursa (job #21513) | Cod sursa (job #769865) | Cod sursa (job #2425326) | Cod sursa (job #2031732) | Cod sursa (job #2335321)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int const maxim=50000;
vector <int> matrice[maxim];
int n,m;
bool vizitat[maxim];
queue <int> coada;
void citire(){
in >> n >> m;
for(int i=1;i<=m;i++){
int a,b;
in >> a >> b;
matrice[a].push_back(b);
}
}
void dfs(int nodstart){
vizitat[nodstart]=true;
coada.push(nodstart);
for(size_t i=0;i<matrice[nodstart].size();i++){
int vecin=matrice[nodstart][i];
if(vizitat[vecin]==false)dfs(vecin);
}
}
void parcurgere(){
for(int i=1;i<=n;i++){
if(vizitat[i]==false)dfs(i);
}
}
void afisare(){
while(!coada.empty()){
out << coada.front() << " ";
coada.pop();
}
}
int main(){
citire();
parcurgere();
afisare();
return 0;}