Pagini recente » Cod sursa (job #2692291) | Cod sursa (job #2358719) | Cod sursa (job #1631079) | Cod sursa (job #2703421) | Cod sursa (job #276830)
Cod sursa(job #276830)
#include<stdio.h>
int N,M,S,viz[10000];
int st,sf,niv;
int n[10000];
int coada[10000];
int a[10000][10000];
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;
}