Pagini recente » Cod sursa (job #53330) | Cod sursa (job #1378611) | Cod sursa (job #570036) | Cod sursa (job #1104661) | Cod sursa (job #2087371)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
vector <int> G[50005];
int n, m;
int sol[500005];
int viz[500005];
int counter;
void citire()
{
in >> n >> m;
for(int i = 0; i < m; i++)
{
int x, y;
in >> x >> y;
G[x].push_back(y);
}
}
void dfs(int node)
{
viz[node] = 1;
for(int i = 0; i < G[node].size() ; i++)
{
int x = G[node][i];
if(!viz[G[node][i]])
dfs(G[node][i]);
}
sol[counter++] = node;
}
void solve()
{
for(int i = 1; i <= n; i++)
{
if(!viz[i])
dfs(i);
}
for(int i = counter - 1; i >= 0; i--)
out << sol[i] << " ";
}
int main()
{
citire();
solve();
return 0;
}