Cod sursa(job #651146)

Utilizator ramona.zahariaRamona ramona.zaharia Data 19 decembrie 2011 22:17:07
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<stdio.h>
#define N 100002

int n,nr,m,viz[N];
int c[N], coada[N],prim,ult;
FILE *f,*rez;

typedef struct Nod { int inf; 
                    struct Nod *urm; } Nod;
Nod *v[N];

void parc_BFS(int x)
{Node *q;
int a;
coada[ult+1]=x;
c[x]=1;
viz[x]=1;
for(prim=0;prim<ult;++prim)
   {a=coada[prim];
    for(q=v[a];q;q=q->urm)
      if(viz[q->inf]!=0)
        {coada[ult+1]=q->inf;
        viz[q->inf]=1;
        c[q->inf]=c[a]+1;
        }}}

void cit()
{int cont,b,c;
Node *q;
f=fopen("parcurgere latime.in","r");
fscanf(f,"%d%d%d",&n,&nr,&m);
for(cont=1;cont<=nr;++cont)
    {fscanf(f,"%d%d",&b,&c);
     if((q=(Nod*)malloc(sizeof(Nod)))!=0) return ;

q->inf=c;
q->urm=v[b];
v[b]=q;}}

void afis()
{int cont;
rez=fopen("parcurgere latime.out","w");
for(cont=1;cont<=n;++cont)
     fprintf(rez,"%d ",c[cont]-1);
}

int main()
{cit(); //citirea
BFS(S);  //functia
afis();  //afisarea
fclose(f);  fclose(rez);
return 0;}