Pagini recente » Cod sursa (job #2865601) | Cod sursa (job #3197154) | Cod sursa (job #2865343) | Cod sursa (job #2840288) | Cod sursa (job #3291386)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");
int n, m, x, y, k, f[50005], topsort[50005];
bool no_incoming_edge[50005];
vector<int> L[50005];
void dfs (int nod) {
if (f[nod] == 1){
return;
}
f[nod] = 1;
for (int i=0; i<L[nod].size(); i++){
if (f[L[nod][i]] == 0){
dfs(L[nod][i]);
}
}
topsort[++k] = nod;
}
int main(){
fin >> n >> m;
for (int i=0; i<m; i++){
fin >> x >> y;
L[x].push_back(y);
no_incoming_edge[y] = true;
}
for (int i=0; i<n; i++){
if (no_incoming_edge[i] == false){
dfs(i+1);
}
}
for (int i=n; i>0; i--){
fout << topsort[i] << ' ';
}
return 0;
}