Pagini recente » Cod sursa (job #2345961) | Cod sursa (job #62256) | Cod sursa (job #2962310) | Cod sursa (job #2924037) | Cod sursa (job #345260)
Cod sursa(job #345260)
#include<stdio.h>
FILE *fin=fopen("bfs.in","r"),
*fout=fopen("bfs.out","w");
int N,M,S,d[100010];
struct nod {int inf;nod* next;};
typedef nod* lista;
lista L[100010];
char viz[100010];
lista Q,Qf;
void bfs()
{
Q=Qf=new nod;
Q->inf=S;Q->next=NULL;
viz[S]=1;d[S]=1;
while(Q)
{
int crt=Q->inf;
for(lista p=L[crt];p;p=p->next)
if(viz[p->inf]==0)
{
d[p->inf]=d[crt]+1;
Qf->next=new nod;Qf=Qf->next;
Qf->inf=p->inf;Qf->next=NULL;
viz[p->inf]=1;
}
lista aux=Q;
Q=Q->next;
delete aux;
}
}
int main()
{
fscanf(fin,"%d %d %d",&N,&M,&S);
for(int i=1;i<=M;i++)
{
int x,y;
fscanf(fin,"%d %d",&x,&y);
lista aux=new nod;
aux->inf=y;
aux->next=L[x];
L[x]=aux;
}
bfs();
for(int i=1;i<=N;i++)
fprintf(fout,"%d ",d[i]-1);
return 0;
}