Pagini recente » Cod sursa (job #722754) | Cod sursa (job #2119058) | Cod sursa (job #1599499) | Cod sursa (job #841432) | Cod sursa (job #1809447)
#include <stdio.h>
#include <stdlib.h>
int nr,rez[100001],mark[100001],vf[1000001],next[1000001],coada[1000001],lista[100001];
void add(int x,int y)
{
nr++;
vf[nr]=y;
next[nr]=lista[x];
lista[x]=nr;
}
int main()
{
int n,m,s,i,x,y,p,u;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for(i=1; i<=m; i++)
{
scanf("%d%d",&x,&y);
if(x!=y)
add(x,y);
}
mark[s]=1;
rez[s]=1;
p=u=1;
coada[1]=s;
while(p<=u)
{
x=lista[coada[p]];
while(x!=0)
{
if(mark[vf[x]]!=1)
{
u++;
coada[u]=vf[x];
mark[vf[x]]=1;
rez[vf[x]]=rez[coada[p]]+1;
}
x=next[x];
}
p++;
}
for(i=1; i<=n; i++)
printf("%d ",rez[i]-1);
return 0;
}