Pagini recente » Cod sursa (job #2453958) | Cod sursa (job #1340418) | Cod sursa (job #1648263) | Cod sursa (job #1931418) | Cod sursa (job #191663)
Cod sursa(job #191663)
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
unsigned int **graf, size[50000], grad_out[50000], sortat[50000];
unsigned int nrNodes, nrEdges, i, src, dest, sortat_size=0, j, k;
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w+", stdout);
scanf("%u %u\n", &nrNodes, &nrEdges);
graf = malloc(sizeof(*graf) * nrNodes);
memset(size, 0, sizeof(unsigned int) * nrNodes);
for (i=0; i<nrNodes; ++i) graf[i] = malloc(sizeof(**graf) * nrEdges);
for (i=0; i<nrEdges; ++i) {
scanf("%u %u\n", &src, &dest);
--src; --dest;
graf[src][ size[src]++ ] = dest;
++grad_out[dest];
}
for (i=0; i<nrNodes; ++i)
if (!grad_out[i]) sortat[sortat_size++] = i;
for (i=0; i<nrNodes; ++i) {
for (j=0; j<size[sortat[i]]; ++j) {
--grad_out[j];
if (!grad_out[j]) sortat[sortat_size++] = j;
}
}
for (i=0; i<nrNodes; ++i)
printf("%u ", sortat[i]+1);
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}