Pagini recente » Cod sursa (job #184887) | Cod sursa (job #430832) | Cod sursa (job #1595743) | Cod sursa (job #2111306) | Cod sursa (job #352471)
Cod sursa(job #352471)
#include <stdio.h>
#include <vector>
#include <string.h>
using namespace std;
vector<int> v[50001];
int sol[50001], cnt;
bool used[50001];
void dfs(int);
int main()
{
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
int n, m, i, a, b;
scanf("%d %d", &n, &m);
cnt = n;
memset(used, 0, sizeof(used));
for(i = 1; i <= m; ++i)
{
scanf("%d %d", &a, &b);
v[a].push_back(b);
used[b] = 1;
}
for(i = 1; i <= n; ++i)
{
if(!used[i])
{
v[0].push_back(i);
}
}
memset(used, 0, sizeof(used));
dfs(0);
for(i = 1; i <= n; ++i)
{
printf("%d ", sol[i]);
}
printf("\n");
return 0;
}
void dfs(int nod)
{
used[nod] = 1;
for(vector<int> :: iterator it = v[nod].begin(); it != v[nod].end(); ++it)
{
if(!used[*it])
{
dfs(*it);
}
}
sol[cnt--] = nod;
}