Pagini recente » Cod sursa (job #1581839) | Cod sursa (job #2720046) | Cod sursa (job #1916219) | Cod sursa (job #2747840) | Cod sursa (job #1716321)
#include <cstdio>
#include <queue>
using namespace std;
struct nod{
int vf;
nod *urm;
};
int n,m,i,j,s,viz[100001],x,y;
nod *a[100001],*p;
void bfs(int x)
{
queue <int> q;
int i,vf;
q.push(x);
while (!q.empty())
{
vf=q.front();q.pop();
for (p=a[vf];p!=NULL;p=p->urm)
if (!viz[p->vf]) {
viz[p->vf]=viz[vf]+1;
q.push(p->vf);
}
}
}
int main()
{
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);
p=new nod;
p->vf=y;
p->urm=a[x];
a[x]=p;
}
viz[s]=1;
bfs(s);
for (i=1;i<=n;i++)
printf("%d ",viz[i]-1);
}