Cod sursa(job #650745)

Utilizator do0ottzHapau Bety do0ottz Data 18 decembrie 2011 21:09:08
Problema BFS - Parcurgere in latime Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.22 kb
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

typedef struct node
{int val;
struct node *next;} node;

FILE *f;FILE *h;
node *(list[20]);
node *prim;node *p;
int m,n , s , x , y ,i , j , v[20];

void init()
{ fscanf(f,"%d%d",&n,&m);}

void add( node *(*prim))
{node *nod;
nod=(node *)malloc(sizeof(node));
fscanf(f,"%d",&y);
for (p=(*prim); p->next!=NULL;p=p->next){;}

p->next=nod;
}
node *nod;
void creare()
{while(fscanf(f,"%d",&x))
   add(&list[x]);
 fclose(f);}

node *prim1;

void addback(node *(*prim1))
{node *nod;
nod=(node *)malloc(sizeof(node));
for(p=(*prim1); p->next!=NULL; p=p->next);
nod->val=i;}

void elim(node *(*prim1))
{node *p;
for(p=(*prim1);p->next!=NULL;p=p->next)
 free(p);}

void crearee()
{i=s;
addback(&list[s]);v[s]=0;
while(list[s]->next!=NULL)
  {i=list[s]->next->val;
  if(v[i]==-1)
   {addback(&list[s]->next);v[i]=v[list[s]->val]+1;}
   list[s]->next=list[s]->next->next;
}}

int main()
{f=fopen("bfs.in","r");
h=fopen("bfs.out","w");
if (!f)
  {printf("eroare . fisier inexistent"); return 1;}
init();
fscanf(f,"%d",&s);
creare();
for (i=1;i<=n;i++)
    v[i]=-1;
crearee();
for(i=1;i<=n;i++)
 fprintf(h,"%d ",v[i]);
free(nod);
return 0;}