Pagini recente » Cod sursa (job #3351513) | Cod sursa (job #3309261) | Cod sursa (job #3332371) | Cod sursa (job #3346686) | Cod sursa (job #3336435)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n,m,x,y;
vector<vector<int>> adj;
vector<int> visited,ans;
void dfs(int v){
visited[v]=true;
for(int u: adj[v]){
if(!visited[u]){
dfs(u);
}
}
ans.push_back(v);
}
void toposort(){
visited.assign(n+1,false);
ans.clear();
for(int i=1;i<=n;i++){
if(!visited[i]){
dfs(i);
}
}
reverse(ans.begin(), ans.end());
for(int i=0;i<ans.size();i++){
fout << ans[i] << " ";
}
}
int main(){
fin >> n >> m;
adj.resize(n+1);
ans.resize(n+1);
visited.resize(n+1);
for (int i=1;i<=m;i++){
fin >> x>>y;
adj[x].push_back(y);
}
toposort();
return 0;
}