Pagini recente » Cod sursa (job #761199) | Cod sursa (job #293409) | Cod sursa (job #1539106) | Cod sursa (job #154851) | Cod sursa (job #1373157)
#include <fstream>
#include <vector>
using namespace std;
const int kNMax = 50010;
vector<int> G[kNMax];
int n, k, sortare_topo[kNMax];
bool viz[kNMax];
void Citire() {
ifstream in("sortaret.in");
int m, x, y;
in >> n >> m;
for (int i = 1; i <= m; ++i) {
in >> x >> y;
G[x].push_back(y);
}
in.close();
}
void Dfs(int nod) {
int vecin;
viz[nod] = 1;
for (int j = 0; j < G[nod].size(); ++j) {
vecin = G[nod][j];
if(!viz[vecin])
Dfs(vecin);
}
sortare_topo[++k] = nod;
}
void Solve() {
for (int i = 1; i <= n; ++i) {
if(!viz[i])
Dfs(i);
}
}
void Afisare() {
ofstream out("sortaret.out");
for (int i = k; i >= 1; --i)
out << sortare_topo[i] << ' ';
out.close();
}
int main() {
Citire();
Solve();
Afisare();
return 0;
}