Pagini recente » Cod sursa (job #1312192) | Cod sursa (job #1285702) | Rating Jung Hoseok (jung_hoseok) | Cod sursa (job #2034298) | Cod sursa (job #1259974)
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,x,i,a,b,c[100010],s[100010];
struct nod
{
int nr;
nod *urm;
}*p,*v[100010];
void add(nod *&d,int x)
{
nod *p;
p=new nod;
p->nr=x;
p->urm=d;
d=p;
}
void BFS(int x)
{
nod *p;
s[1]=x;
int l=1;
c[x]=0;
for(int i=1;i<=l;i++)
for(p=v[s[i]];p!=0;p=p->urm)
if(c[p->nr]==-1)
{
c[p->nr]=c[s[i]]+1;
l++;
s[l]=p->nr;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&x);
for(i=1;i<=m;i++)
{
scanf("%d %d",&a,&b);
add(v[a],b);
}
memset(c,-1,sizeof(c));
BFS(x);
for(i=1;i<=n;i++)
printf("%d ",c[i]);
return 0;
}