Pagini recente » Cod sursa (job #2958999) | Cod sursa (job #490577) | Cod sursa (job #1484903) | Cod sursa (job #2424362) | Cod sursa (job #2773215)
#include <fstream>
#include <vector>
#include <forward_list>
const int MAX_N = 50001;
const int MAX_M = 100001;
int n, m;
std::vector<int> graph[MAX_N];
std::forward_list<int> sorted;
bool flag[MAX_N];
void read()
{
std::ifstream input("sortaret.in");
input >> n >> m;
int x, y;
for (int edge(0); edge < m; ++edge) {
input >> x >> y;
graph[x].push_back(y);
}
input.close();
}
void print()
{
std::ofstream output("sortaret.out");
for (auto it : sorted) {
output << it << ' ';
}
output.put('\n');
output.close();
}
void dfs(int vertex)
{
flag[vertex] = true;
for (auto neighbor : graph[vertex]) {
if (!flag[neighbor]) {
dfs(neighbor);
}
}
sorted.push_front(vertex);
}
void toposort()
{
for (int vertex(1); vertex <= n; ++vertex) {
if (!flag[vertex]) {
dfs(vertex);
}
}
}
int main()
{
read();
toposort();
print();
return 0;
}