Pagini recente » Cod sursa (job #1208003) | Cod sursa (job #709148) | Cod sursa (job #96973) | Cod sursa (job #620504) | Cod sursa (job #1019767)
#include <iostream>
#include <cstdio>
#define Nmax 2500
using namespace std;
int a[Nmax][Nmax];
int c[Nmax],d[Nmax];
int i,s,n;
bool viz[Nmax];
void reading(int &n,int &s)
{
int m;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdin);
scanf("%d %d %d",&n,&m,&s);
for(i=1;i<=m;++i)
{
int x,y;
scanf("%d %d",&x,&y);
++a[x][0];a[x][a[x][0]]=y;
}
}
void bfs()
{
int x,dist=0;
int prim=0,ultim=0;
viz[s]=true;
d[s]=0;
c[prim]=s;
while(prim<=ultim)
{
x=c[prim++];
for(i=1;i<=a[x][0];++i)
if (!viz[a[x][i]])
{
d[a[x][i]]=d[x]+1;
viz[a[x][i]]=1;
c[++ultim]=a[x][i];
}
}
}
int main()
{
reading(n,s);
bfs();
for(i=1;i<=n;++i)
if (viz[i]) printf("%d ",d[i]);
else printf("%d ",-1);
return 0;
}