Pagini recente » Cod sursa (job #2096982) | Monitorul de evaluare | Cod sursa (job #1091222) | Cod sursa (job #2131404) | Cod sursa (job #954387)
Cod sursa(job #954387)
#include <cstring>
#include <fstream>
#include <list>
using namespace std;
void visit(int node, list<int> *edges, int *visited, list<int> *result){
int x;
visited[node] =1;
for(int x: edges[node])
if(!visited[x])
visit(x, edges, visited, result);
result->push_back(node+1);
}
int main(){
int n, m, i, x, y;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
in>>n>>m;
list<int> edges[n], result;
int visited[n];
memset(visited, 0, n*sizeof(int));
for(i=0; i<m ;i++){
in>>x>>y;
edges[x-1].push_back(y-1);
}
for(i=0; i<n; i++)
if(!visited[i])
visit(i, edges, visited, &result);
result.reverse();
for(int i: result){
out<<i<<" ";
}
in.close();
out.close();
return 0;
}