Pagini recente » Cod sursa (job #547363) | Cod sursa (job #46597) | Cod sursa (job #1076440) | Cod sursa (job #1596603) | Cod sursa (job #2533638)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int vf[100005], urm[100005], lst[100005], nrp[50005], q[50005];
int nr, n, m;
void adauga(int x, int y) {
vf[++nr] = y;
urm[nr] = lst[x];
lst[x] = nr;
++nrp[y];
}
void sortare_topologica() {
int x, y, st = 0, dr = -1;
for(int i = 1; i <= n; ++i) {
if(nrp[i] == 0) q[++dr] = i;
}
while(st <= dr) {
x = q[st++];
fout << x << ' ';
for(int p = lst[x]; p != 0; p = urm[p]) {
y = vf[p];
if(--nrp[y] == 0) {
q[++dr] = y;
}
}
}
}
int main() {
int x, y;
fin >> n >> m;
do {
fin >> x >> y;
adauga(x, y);
} while(--m);
sortare_topologica();
fin.close(); fout.close();
return 0;
}