Pagini recente » Cod sursa (job #566380) | Cod sursa (job #1226220) | Cod sursa (job #320055) | Cod sursa (job #2924198) | Cod sursa (job #2529435)
#include <fstream>
#include <vector>
#include <queue>
std::vector<int> arce[50000];
int predecesori[50000];
int main() {
std::ifstream fin("sortaret.in");
std::ofstream fout("sortaret.out");
int n, m;
fin >> n >> m;
for (int i = 0; i < m; i++) {
int x, y;
fin >> x >> y;
x--; y--;
arce[x].push_back(y);
predecesori[y]++;
}
std::queue<int> coada;
for (int i = 0; i < n; i++) {
if (predecesori[i] == 0) {
coada.push(i);
}
}
while (!coada.empty()) {
fout << coada.front() + 1 << ' ';
for (const auto& succ : arce[coada.front()]) {
predecesori[succ]--;
if (predecesori[succ] == 0) {
coada.push(succ);
}
}
coada.pop();
}
return 0;
}