Pagini recente » Cod sursa (job #2359385) | Cod sursa (job #1688635) | Cod sursa (job #2788637) | Cod sursa (job #705485) | Cod sursa (job #1810278)
#include <iostream>
#include <stdio.h>
#include <vector>
#define MAXN 50000 + 10
using namespace std;
FILE *f = fopen("sortaret.in", "r");
FILE *g = fopen("sortaret.out", "w");
vector<int> graph[MAXN];
int n, m, x, y, p;
int used[MAXN], sol[MAXN];
inline void add(int x, int y)
{
graph[x].push_back(y);
}
inline void read()
{
fscanf(f, "%d %d", &n, &m);
for (unsigned int i = 1; i <= m; i++)
fscanf(f, "%d %d", &x, &y), add(x, y);
}
inline void dfs(int node)
{
if (used[node] != 0)
return;
used[node] = 1;
for (int i = 0; i < graph[node].size(); i++)
dfs(graph[node][i]);
sol[p--] = node;
}
inline void solve()
{
p = n;
for (unsigned int i = 1; i <= n; i++)
dfs(i);
}
inline void write()
{
for (unsigned int i = 1; i <= n; i++)
fprintf(g, "%d ", sol[i]);
}
int main()
{
read();
solve();
write();
fclose(f);
fclose(g);
return 0;
}