Cod sursa(job #651180)

Utilizator PetroiuDorinPetroiu Dorin ALexandru PetroiuDorin Data 19 decembrie 2011 23:32:57
Problema Sortare topologica Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.92 kb
#include<stdio.h>
struct nod {int nr;
            nod *leg;};
nod *a[80];
int n,m,cont[20],c[20],gasit;

void adauga(int i,int j)
{nod *d;
cont[j]++;
d=new nod;
d->nr=j;
d->leg=a[i];
a[i]=d;
}

void actualizare(int x)
{nod *d;
d=a[x]; //adresa cu toti succesorii lui x
while(d!=0)
  {cont[d->nr]--;
   d=d->leg;}}

int main()
{int i,j,k;
printf("%d", n);
printf("\n");
scanf("%d", &n);
int nr;
for(i=1;i<=n;i++)
   {cont[i]=0;
    a[i]=0;
   }
while(i)
   {printf("%d%d", i,j);
    printf("\n");
    scanf("%d%d", &i, &j);
    if(i) adauga(i,j);}
m=n;
do
{k=1; 
gasit=0;
for(i=1;i<=n;i++)
  if(cont[i]==0)
    {gasit=1;
    m--;
    c[k]=i;
    k++;
    cont[i]=-1;
    }
for(i=1;i<=k-1;i++)
  {actualizare(c[i]);
   printf("%d", c[i]);
   printf("\n");
  }}
while(gasit!=0 && n!=0);
  {if(m!=0)
     printf("relatie contradictorie");
    else printf("totul este ok");}
return 0;
}