Cod sursa(job #2287749)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 22 noiembrie 2018 14:21:09
Problema Sortare topologica Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include<stdio.h>
int n,m,i,j,a,b,l[100000],w[50001],g[50001],q[50001],k;
int main() {
    freopen("sortaret.in","r",stdin),freopen("sortaret.out","w",stdout),scanf("%d%d",&n,&m);
    while(m--)
        scanf("%d%d",&a,&b),w[a]++;
    for(i=1;i<=n;i++)
        w[i]+=w[i-1];
    fclose(stdin);
    freopen("sortatet.in","r",stdin),scanf("%d%d",&n,&m);
    while(m--)
        scanf("%d%d",&a,&b),q[a]++,l[w[a-1]+q[a]]=b,g[b]++;
    for(i=1;i<=n;i++)
        q[i]=0;
	for(i=1;i<=n;i++)
		if(!g[i])
			q[++q[0]]=i;
	for(i=1;i<=q[0];i++) {
		k=q[i],printf("%d ",k);
		for(j=w[k-1]+1;j<=w[k];j++) {
			g[l[j]]--;
			if(!g[l[j]])
				q[++q[0]]=l[j];
		}
	}
}