Mai intai trebuie sa te autentifici.
Cod sursa(job #2287802)
| Utilizator | Data | 22 noiembrie 2018 15:30:23 | |
|---|---|---|---|
| Problema | Sortare topologica | Scor | 100 |
| Compilator | c-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include<stdio.h>
int n,m,i,j,a,b,k,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);
for(i=1;i<=m;i++)
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);
for(i=1;i<=m;i++) {
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++) {
t=q[i],printf("%d ",t);
for(j=w[t-1]+1;j<=w[t];j++) {
g[l[j]]--;
if(!g[l[j]])
q[++q[0]]=l[j];
}
}
return 0;
}
