Pagini recente » Cod sursa (job #1191178) | Cod sursa (job #1201122) | Cod sursa (job #2338908) | Cod sursa (job #1234807) | Cod sursa (job #903641)
Cod sursa(job #903641)
#include <stdio.h>
#include <vector>
using namespace std;
int Q[50001];
vector <int> G[50001];
int main() {
freopen ("sortaret.in", "r", stdin);
freopen ("sortaret.out", "w", stdout);
int N, M, x, y, deg[50001], count = 0, i, m;
scanf ("%d %d", &N, &M);
for (i = 1; i <= N; ++i)
deg[i] = 0;
for (i = 1; i <= M; ++i) {
scanf ("%d %d", &x, &y);
G[x].push_back(y);
++deg[y];
}
for (i = 1; i <= N; ++i)
if (deg[i] == 0)
Q[++Q[0]] = i;
for (i = 1; i <= N; ++i) {
x = Q[i];
for (int j = 0; j < G[x].size(); ++j) {
m = G[x][j];
--deg[G[x][j]];
if (deg[G[x][j]] == 0)
Q[++Q[0]] = G[x][j];
}
}
for (i = 1; i <= N; ++i) {
printf ("%d ", Q[i]);
}
return 0;
}