Cod sursa(job #279700)

Utilizator stanesealexStanese Alex stanesealex Data 12 martie 2009 22:16:36
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
int a[100][100],b[100];
struct elem
{
elem *leg;
int inf;
int inf2;
};
int main()
{
FILE *f=fopen("bfs.in","r");
int n,m,s,i,x,y;
elem *p,*prim,*ultim;
fscanf(f,"%d %d %d",&n,&m,&s);
for (i=1;i<=m;i++)
   {
   fscanf(f,"%d %d",&x,&y);
   a[x][y]=1;
   }
fclose(f);
prim=new elem;
prim->leg=NULL;
prim->inf=1;
ultim=prim;
b[s]=1;
prim->inf2=s;
while (prim)
    {
    for (i=1;i<=n;i++)
       {
	if (a[s][i]!=0&&b[i]==0)
	   {
	   b[i]=prim->inf+1;
	   p=new elem;
	   ultim->leg=p;
	   p->leg=NULL;
	   p->inf=prim->inf+1;p->inf2=i;
	   ultim=p;
	   p->leg=NULL;
	   }
	}
    prim=prim->leg;
    s=prim->inf2;
    }
FILE *g=fopen("bfs.out","w");
for (i=1;i<=n;i++)
    if (b[i]!=0)
    fprintf(g,"%d ",b[i]-1);
    else fprintf(g,"%d ",-1);
fclose(g);
return 0;
}