Pagini recente » Cod sursa (job #1927631) | Cod sursa (job #2173859) | Cod sursa (job #740472) | Cod sursa (job #1622510) | Cod sursa (job #1025780)
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
struct nod
{
int vf;
nod *urm;
};
nod *l[100010];
int n,m,st,nr,pas[100010];
void adaug(nod *&pr, int x)
{
nod *nou;
nou=new nod;
nou->vf=x;
nou->urm=pr;
pr=nou;
}
void citire()
{
int i,x,y;
scanf("%d%d%d",&n,&m,&st);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
adaug(l[x],y);
}
}
void BFS()
{
queue<int> q;
q.push(st);
int p,v;
nod *c;
while(!q.empty())
{
p=q.front();
q.pop();
c=l[p];
while(c)
{
if(pas[c->vf]==-1)
{
q.push(c->vf);
pas[c->vf]=pas[p]+1;
}
c=c->urm;
}
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
memset(pas,-1,sizeof(pas));
pas[st]=0;
BFS();
for(int i=1;i<=n;i++)
printf("%d ",pas[i]);
return 0;
}