Pagini recente » Cod sursa (job #2863267) | Cod sursa (job #2547985) | Cod sursa (job #979325) | Cod sursa (job #864126) | Cod sursa (job #2406915)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
vector<int> grad(50001, 0);
vector< vector <int> > v(50001);
queue<int> top;
vector <int> sort_top(int n) {
vector<int> sol;
for(int i = 1; i <= n; i++)
{
if (grad[i] == 0) {
top.push(i);
}
}
while(!top.empty()){
int nod = top.front();
top.pop();
sol.push_back(nod);
for(auto&& vecin : v[nod])
{
if ((--grad[vecin]) == 0)
top.push(vecin);
}
}
return sol;
}
int main() {
int n, m;
in >> n >> m;
int x, y;
for(int i = 0; i < m; i++)
{
in >> x >> y;
grad[y]++;
v[x].push_back(y);
}
vector<int> sol = sort_top(n);
for(auto&& nod : sol)
{
out << nod << " ";
}
return 0;
}