Pagini recente » Cod sursa (job #969551) | Cod sursa (job #540804) | Cod sursa (job #3146148) | Cod sursa (job #1848100) | Cod sursa (job #276839)
Cod sursa(job #276839)
#include<stdio.h>
int N,M,S,viz[100000];
int st,sf,niv;
int n[100000];
int coada[100000];
typedef struct Nod
{
int k;
struct Nod *urm;
}*pNod;
pNod v[100001];
void add(pNod &dest,int x)
{
pNod p;
p = new Nod;
p->k=x;
p->urm=dest;
dest=p;
}
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);
add(v[x],y);
}
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(v[coada[st]]&&!viz[v[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;
}