Pagini recente » Cod sursa (job #2967991) | Cod sursa (job #424808) | Cod sursa (job #1387991) | Cod sursa (job #1847912) | Cod sursa (job #276828)
Cod sursa(job #276828)
#include<stdio.h>
int N,M,S,viz[100];
int st,sf,niv;
int n[100];
int coada[100];
int a[100][100];
void citire()
{
int i,x,y;
FILE *in = fopen("bfs.in","rt");
fscanf(in,"%d %d %d",&N,&M,&S);
for(i=1;i<=N;i++) n[i]=-1;
for(i=1;i<=M;i++)
{
fscanf(in,"%d %d",&x,&y);
a[x][y]=1;
}
fclose(in);
}
void bf(int S)
{
int i;
st=sf=1;
niv=0;
n[S]=niv;
viz[S]=1;
coada[st]=S;
sf++;
while(st<sf)
{
niv++;
for(i=1;i<=N;i++)
if(a[coada[st]][i]&&!viz[i])
{
viz[i]=1;
n[i]=n[coada[st]]+1;
coada[sf]=i;
sf++;
}
st++;
}
}
int main()
{
int i,nr=0;
citire();
bf(S);
FILE *out=fopen("bfs.out","wt");
for(i=1;i<=N;i++)
fprintf(out,"%d ",n[i]);
fclose(out);
return 0;
}