Pagini recente » Cod sursa (job #3198317) | Cod sursa (job #2246000) | Cod sursa (job #2765651) | Cod sursa (job #39619) | Cod sursa (job #2425080)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
class Graph
{
private:
int n, m;
vector<vector<int>>edges;
public:
Graph(int _n, int _m) : n{_n}, m{_m}{
edges.resize(_n + 1, vector<int>());
}
void addEdge(int x, int y){
edges[x].push_back(y);
}
vector<int> getTopologicSort(int startNode)
{
queue<int> q;
vector<int> answ;
q.push(startNode);
while (!q.empty())
{
int k = q.front(); q.pop();
answ.push_back(k);
for (int &x : edges[k])
q.push(x);
}
return answ;
}
};
int main()
{
int n, m, x, y, startNode;
fin >> n >> m;
Graph g(n, m);
fin >> x >> y;
g.addEdge(x, y);
startNode = x;
for (int i = 2; i <= m; ++i)
{
fin >> x >> y;
g.addEdge(x, y);
}
vector<int> answ = g.getTopologicSort(startNode);
for_each(answ.begin(), answ.end(), [](int &c) {fout << c << " ";});
return 0;
}