Pagini recente » Istoria paginii utilizator/dana.mtn | Cod sursa (job #1785884) | Cod sursa (job #1554913) | Cod sursa (job #2018770) | Cod sursa (job #1909488)
#include <bits/stdc++.h>
using namespace std;
const int nMax = 50000;
int n, m, gin[nMax];
vector<int>tra[nMax];
void Citire() {
scanf("%d%d", &n, &m);
for (int i = 1, from, to; i <= m; ++i) {
scanf("%d%d", &from, &to);
tra[to].push_back(from);
gin[from] ++;
}
}
vector<int>Sortaretopo() {
queue<int>q;
vector<int>sol;
for (int i = 1; i <= n; ++i)
if (gin[i] == 0)
q.push(i);
while (!q.empty()) {
int nod = q.front();
q.pop();
sol.push_back(nod);
for (const auto& itr : tra[nod]) {
gin[itr]--;
if (!gin[itr]) {
q.push(itr);
}
}
}
reverse(begin(sol), end(sol));
return sol;
}
void print(const vector<int>&that) {
for (const auto& itr : that)
printf("%d ", itr);
printf("\n");
}
int main() {
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
Citire();
auto ordine = Sortaretopo();
print(ordine);
return 0;
}