Pagini recente » Cod sursa (job #2527307) | Cod sursa (job #53237) | Cod sursa (job #1327029) | Cod sursa (job #1105493) | Cod sursa (job #272757)
Cod sursa(job #272757)
#include<iostream>
#include<stdio.h>
FILE *f=fopen("bfs.in","r"),*g=fopen("bfs.out","w");
struct nod{int inf;nod *next;};
nod *v[100002],*inc,*sfc,*c,*aux;
int n,m,s,i,x,y,l[100005];
void add_n(nod *&v,int y)
{
nod *c=new nod;
c->next=v;
c->inf=y;
v=c;
}
void add_c(nod *&inc,nod *&sfc,int x)
{
nod *c;
if(!inc)
{
inc=new nod;
inc->next=0;
inc->inf=x;
sfc=inc;
}
else
{
c=new nod;
sfc->next=c;
c->next=0;
c->inf=x;
sfc=c;
}
}
int main()
{
fscanf(f,"%d%d%d",&n,&m,&s);
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&x,&y);
add_n(v[x],y);
}
memset(l,-1,sizeof(l));
add_c(inc,sfc,s);
l[s]=0;
while(inc)
{
for(c=v[inc->inf];c;c=c->next)
{
if(l[c->inf]<0)
{
add_c(inc,sfc,c->inf);
l[c->inf]=l[inc->inf]+1;
}
}
aux=inc;
inc=inc->next;
delete aux;
}
for(i=1;i<=n;i++)
fprintf(g,"%d ",l[i]);
return 0;
}