Pagini recente » Borderou de evaluare (job #3366082) | Cod sursa (job #3366085) | Cod sursa (job #3366079) | Cod sursa (job #3366087) | Cod sursa (job #3366708)
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
std::ifstream fin("sortaret.in");
std::ofstream fout("sortaret.out");
int n, m;
int d[50005];
std::bitset<500005> viz;
std::vector<int> L[50005];
std::queue<int> answer;
void sortTop(int k) {
viz[k] = 1;
answer.push(k);
for (int w : L[k]) {
d[w]--;
if (d[w] == 0) {
sortTop(w);
}
}
}
int main() {
int x, y;
fin >> n >> m;
for (int i = 1; i <= m; i++) {
fin >> x >> y;
L[x].push_back(y);
d[y]++;
}
for (int i = 1; i <= n; i++) {
if (d[i] == 0 && viz[i] == 0) {
sortTop(i);
}
}
while (!answer.empty()) {
fout << answer.front() << " ";
answer.pop();
}
fout << "\n";
fout.close();
}