Cod sursa(job #650874)

Utilizator FIIBarMazNeaFIIBarcanMaziluNeagu FIIBarMazNea Data 19 decembrie 2011 02:30:20
Problema BFS - Parcurgere in latime Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.99 kb
#include<stdio.h>
#define NMAX 100001

int viz[NMAX],n,m,S;
FILE *inf,*outf;
typedef struct Node
{ int info; struct Node *next; }Node;
Node *G[NMAX];
int coada[NMAX],prim,ultim,cost[NMAX],viz[NMAX];


void bfs(int a)
{
Node *p;
int x;
coada[ultim++]=a;
cost[a]=1;
viz[a]=1;
for(prim=0;prim<ultim;prim++)
   {
    x=coada[prim];
    for(p=G[x];p;p=p->next)
        if(!viz[p->info])
        {
        coada[ultim++]=p->info;
        viz[p->info]=1;
        cost[p->info]=cost[x]+1;
        }
   }
}


void citire()
{int i,z,y;
Node *p;
inf=fopen("bfs.in","r");
fscanf(inf,"%d %d %d",&n,&m,&S);
for(i=1;i<=m;i++)
 {
  fscanf(inf,"%d %d",&z,&y);
  if(!(p=(Node*)malloc(sizeof(Node)))) return ;
  p->info=y;
  p->next=G[z];
  G[z]=p;
 }

}


void afisare()
{
int i;

outf=fopen("bfs.out","w");
for(i=1;i<=n;i++)
   fprintf(outf,"%d ",cost[i]-1);
}



int main()
{
citire();

bfs(S);
afisare();
fclose(inf);
fclose(outf);
system("pause");
return 0;
}