Pagini recente » Cod sursa (job #3281220) | Diferente pentru schimbare-borland/alternativa intre reviziile 13 si 14 | Cod sursa (job #2824606) | Cod sursa (job #759513) | Cod sursa (job #2424755)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector <int> graf[50005];
int grad[50005];
vector <int> coada;
void SortareTopologica(int N) {
int i;
for (i = 1; i <= N; i++)
if (grad[i] == 0)
coada.push_back(i);
for (i = 0; i < N; i++) {
int x = coada[i];
int lim = graf[x].size();
int j;
for (j = 0; j < lim; j++) {
grad[graf[x][j]]--;
if (grad[graf[x][j]] == 0)
coada.push_back(graf[x][j]);
}
}
}
int main() {
int N, M, x, y;
fin >> N >> M;
int i;
for (i = 0; i < M; i++) {
fin >> x >> y;
graf[x].push_back(y);
grad[y]++;
}
SortareTopologica(N);
for (i = 0; i < N; i++)
fout << coada[i] << " ";
return 0;
}