Pagini recente » Cod sursa (job #469202) | Cod sursa (job #657878) | Cod sursa (job #2040812) | Cod sursa (job #410561) | Cod sursa (job #279382)
Cod sursa(job #279382)
#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,*q;
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;
p=prim;
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;
}
}
q=prim;
prim=prim->leg;
delete q;
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);
return 0;
}