Pagini recente » Cod sursa (job #1311796) | Cod sursa (job #1954300) | Cod sursa (job #4298) | Cod sursa (job #2752795) | Cod sursa (job #2871145)
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream f ("sortaret.in");
ofstream g ("sortaret.out");
const int N_MAX = 50001;
int n, m;
bool visited[N_MAX];
vector <int> G[N_MAX];
stack <int> S;
void Read()
{
f >> n >> m;
for (int i = 1; i <= m; i++)
{
int x, y;
f >> x >> y;
G[x].push_back(y);
}
}
void DFS(int start)
{
visited[start] = true;
for (unsigned int i = 0; i < G[start].size(); i++)
{
int neighbour = G[start][i];
if (visited[neighbour] == false)
{
DFS(neighbour);
}
}
S.push(start);
}
int main()
{
Read();
for (int i = 1; i <= n; i++)
{
if (visited[i] == false)
{
DFS(i);
}
}
while (S.empty() == false)
{
g << S.top() << " ";
S.pop();
}
}