Pagini recente » Cod sursa (job #1049601) | Cod sursa (job #677141) | Cod sursa (job #1260266) | Cod sursa (job #599547) | Cod sursa (job #1738424)
#include <fstream>
#include <vector>
#include <cstring>
#include <list>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
vector<int> graph[50003];
list<int> vertices;
unsigned int n,m,x,y;
int visited[50003];
void DFS_VISIT(int node) {
visited[node]=1;
for (unsigned int j=0;j<graph[node].size();j++) {
if (!visited[graph[node][j]]) {
DFS_VISIT(graph[node][j]);
}
}
vertices.push_front(node);
}
void DFS(unsigned int n) {
memset(visited,0,sizeof(visited));
for (unsigned int i=1;i<=n;i++) {
if (!visited[i]) {
DFS_VISIT(i);
}
}
}
int main() {
in>>n>>m;
for (unsigned int i=1;i<=m;i++) {
in>>x>>y;
graph[x].push_back(y);
}
DFS(n);
list<int>::iterator it;
for (it=vertices.begin();it!=vertices.end();it++) {
out<<*it<<" ";
}
return 0;
}