Pagini recente » Borderou de evaluare (job #530498) | Cod sursa (job #1988083) | Cod sursa (job #2614906) | Cod sursa (job #3348114) | Cod sursa (job #3336135)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
vector<vector<int>> adj;
vector<int> indeg;
int main() {
int n, m;
cin >> n >> m;
adj.assign(n + 1, vector<int>());
indeg.assign(n + 1, 0);
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
indeg[v]++;
}
queue<int> q;
vector<int> topo;
for (int i = 1; i <= n; i++)
if (indeg[i] == 0)
q.push(i);
while (!q.empty()) {
int c = q.front();
q.pop();
topo.push_back(c);
for (int ne : adj[c]) {
indeg[ne]--;
if (indeg[ne] == 0)
q.push(ne);
}
}
for (int x : topo)
cout << x << " ";
return 0;
}