Pagini recente » Cod sursa (job #712128) | Cod sursa (job #2647641) | Cod sursa (job #2255896) | Cod sursa (job #2925748) | Cod sursa (job #328054)
Cod sursa(job #328054)
#include<stdio.h>
#define Nmx 100001
int n,m,S;
int nr[Nmx],qu[Nmx];
struct nod
{
nod *next;
long inf;
};
nod *L[Nmx];
void insert(int x,int y)
{
nod *aux;
aux = new nod;
aux -> next = L[x];
aux -> inf = y;
L[x]=aux;
}
void citire()
{
scanf("%d%d%d",&n,&m,&S);
int x,y;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
insert(x,y);
}
}
void bfs()
{
int st,dr;
nr[S]=1;
qu[1] = S;
st=dr=1;
while(st<=dr)
{
for(nod *p=L[qu[st]];p!=NULL;p=p->next)
{
int g=p->inf;
if(!nr[g])
{
nr[g]=nr[qu[st]]+1;
qu[++dr]=g;
}
}
++st;
}
}
void afisare()
{
for(int i=1;i<=n;i++)
printf("%d ",nr[i]-1);
printf("\n");
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
bfs();
afisare();
return 0;
}