Pagini recente » Cod sursa (job #2302582) | Cod sursa (job #539277) | Cod sursa (job #3205527) | Cod sursa (job #1664172) | Cod sursa (job #1376347)
#include <stdio.h>
#include <string.h>
#include <vector>
#include <queue>
#define mN 100003
using namespace std;
int i,N,M,S,x,y,f,n,D[mN];
vector <int> G[mN];
queue <int> Q;
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); G[x].push_back(y);}
memset(D,-1,sizeof(D)); Q.push(S); D[S]=0;
while(!Q.empty())
{
f=Q.front();
for(i=0;i<G[f].size();i++)
{
n=G[f][i]; if(D[n]<0)
{Q.push(n); D[n]=D[f]+1;}
}
Q.pop();
}
for(i=1;i<=N;i++) printf("%d ",D[i]);
return 0;
}