Pagini recente » Cod sursa (job #1463345) | Cod sursa (job #2024943) | Cod sursa (job #224096) | Cod sursa (job #350028) | Cod sursa (job #430060)
Cod sursa(job #430060)
#include<stdio.h>
#define Nmax 100010
struct Nod
{
int val;
Nod *next;
} *l[Nmax];
int coad[Nmax];
int N,viz[Nmax],M,S,k,x,y,st;
void adauga(int a,int b)
{
Nod *q=new Nod;
q->val=b;
q->next=l[a];
l[a]=q;
}
void make_bf(int a)
{
Nod *it=l[a];
for(it=l[a];it!=NULL;it=it->next)
{
if(viz[it->val]==0)
{
coad[k++]=it->val;
viz[it->val]=viz[a]+1;
}
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&N,&M,&S);
coad[k++]=S;
viz[S]=1;
for(int i=1;i<=M;++i)
{
scanf("%d%d",&x,&y);
adauga(x,y);
}
while(st<k)
{
make_bf(coad[st]);
++st;
}
for(int i=1;i<=N;++i)
{
printf("%d ",viz[i]-1);
}
}