Pagini recente » Cod sursa (job #2483672) | Cod sursa (job #163596) | Cod sursa (job #1405821) | Cod sursa (job #891882) | Cod sursa (job #1243895)
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#include <queue>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int main (int argc, char const *argv[]) {
int n, m;
in>>n>>m;
map<int, vector<int>> graph;
map<int, int> incoming;
vector<int> sorted;
for (int i = 0; i < m; ++i) {
int x, y;
in>>x>>y;
graph[x].push_back(y);
incoming[y]++;
}
queue<int> sort_queue;
for (int i = 1; i <= n; ++i) {
if(incoming[i] == 0) {
sort_queue.push(i);
}
}
while (!sort_queue.empty()) {
int current = sort_queue.front();
sort_queue.pop();
sorted.push_back(current);
for (const auto& neighbour : graph[current]) {
incoming[neighbour]--;
if (incoming[neighbour] == 0) {
sort_queue.push(neighbour);
}
}
}
for (const auto& x : sorted) {
cout<<x<<" ";
}
return 0;
}