Pagini recente » Cod sursa (job #496816) | Cod sursa (job #2843180) | Cod sursa (job #1660346) | Cod sursa (job #1599579) | Cod sursa (job #1451413)
#include <iostream>
#include <fstream>
#include <list>
const char IN[] = "sortaret.in", OUT[] = "sortaret.out";
const int NMAX = 50001;
int DFS_time = 0;
using namespace std;
list<int> G[NMAX];
int N, M;
int discovery_time[NMAX];
inline void read_data() {
freopen(IN, "r", stdin);
scanf("%d %d", &N, &M);
for (int i = 0; i < M; ++i) {
int src, dst;
scanf("%d %d", &src, &dst);
G[src].push_back(dst);
}
fclose(stdin);
}
ofstream fout(OUT);
void DFS(int node){
fout << node << " ";
discovery_time[node] = ++DFS_time;
for (const int n : G[node]) {
if (discovery_time[n]) {
printf("Eroare: Graf ciclic.\n"); exit(0);
}
DFS(n);
}
}
int main(){
read_data();
for (int i = 1; i <= N; ++i) {
if (!discovery_time[i]) DFS(i);
}
fout << endl;
return 0;
}