Pagini recente » Cod sursa (job #896352) | Cod sursa (job #1567028) | Cod sursa (job #687213) | Cod sursa (job #2294508) | Cod sursa (job #206573)
Cod sursa(job #206573)
#include <stdio.h>
#include <vector>
using namespace std;
const int N_MAX = 50010;
vector <int> G[N_MAX];
int gr[N_MAX];
int q[N_MAX], in = 1, sf = 1;
int main()
{
freopen("sortaret.in", "r", stdin);
#ifndef _SCREEN_
freopen("sortaret.out", "w", stdout);
#endif
int N, M, x, y;
scanf("%d %d\n", &N, &M);
for (int i = 1; i <= M; i ++) {
scanf("%d %d\n", &x, &y);
gr[y] ++;
G[x].push_back(y);
}
for (int i = 1; i <= N; i ++) {
if (gr[i] == 0) q[sf ++] = i;
}
while (in < sf) {
int nod = q[in];
in ++;
printf("%d ", nod);
for (vector <int>::iterator it = G[nod].begin(); it != G[nod].end(); ++ it) {
gr[*it] --;
if (gr[*it] == 0) q[sf ++] = *it;
}
}
printf("\n");
return 0;
}