Cod sursa(job #2288441)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 23 noiembrie 2018 14:11:06
Problema Sortare topologica Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include<stdio.h>
int n,m,i,j,a,b,t,l[100001],w[50001],g[50001],q[50001];
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("sortaret.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;
        if(!g[i])
			q[++q[0]]=i;
    }
	for(i=1;i<=q[0];i++)
		for(t=q[i],printf("%d ",t),j=w[t-1]+1;j<=w[t];g[l[j++]]--) {
			if(g[l[j]]==1)
				q[++q[0]]=l[j];
		}
	return 0;
}