Pagini recente » Cod sursa (job #2786990) | Cod sursa (job #3225830) | Cod sursa (job #1745866) | Cod sursa (job #1281263) | Cod sursa (job #688003)
Cod sursa(job #688003)
#include <cstdio>
#include <vector>
#include <stack>
#include <iostream>
using namespace std;
#define NMAX 100005
int N, M;
vector<int> neigh[NMAX];
vector<int> sortaret;
void read_file(){
int a,b;
FILE * f = fopen("sortaret.in", "rt");
fscanf(f, "%d %d", &N, &M);
for(int i = 0; i < M; ++i){
fscanf(f, "%d %d", &a, &b);
neigh[a].push_back(b);
}
fclose(f);
}
vector<int> visited;
void dfs(int node){
visited[node] = 1;
for(unsigned i = 0; i < neigh[node].size(); ++i)
if(!visited[neigh[node][i]])
dfs(neigh[node][i]);
sortaret.insert(sortaret.begin(), node);
}
void dfs_1(){
for(int i = 1; i <= N; ++i)
if(!visited[i])
dfs(i);
}
void print_sol(){
FILE * f = fopen("sortaret.out", "wt");
for(unsigned i = 0; i < sortaret.size(); ++i)
fprintf(f, "%d ", sortaret[i]);
fclose(f);
}
int main(){
read_file();
visited.resize(N+1);
dfs_1();
print_sol();
return 0;
}