Pagini recente » Cod sursa (job #1327927) | Cod sursa (job #562822) | Cod sursa (job #461662) | Cod sursa (job #428792) | Cod sursa (job #3210982)
#include <iostream>
#include <fstream>
#define M 100005
#define N 50005
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n, m;
int t[2][M], start[N], d[N], c[M];
void liste_adiacenta()
{
int i, x, y;
for (i = 1; i <= m; i++)
{
f >> x >> y;
t[0][i] = y; t[1][i] = start[x]; start[x] = i;
d[y]++;
}
}
void sortare_topologica()
{
int pi = 0, ps = 1, x, k, i;
for (i = 1; i <= n; i++)
if (!d[i]) c[++pi] = i;
while (ps <= pi)
{
k = c[ps];
x = start[k];
while (x)
{
d[t[0][x]]--;
if (!d[t[0][x]])
c[++pi] = t[0][x];
x = t[1][x];
}
ps++;
}
for (i = 1; i <= n; i++)
g << c[i] << " ";
}
int main()
{
f >> n >> m;
liste_adiacenta();
sortare_topologica();
return 0;
}