Pagini recente » Cod sursa (job #2421519) | Cod sursa (job #596624) | Cod sursa (job #2829685) | Cod sursa (job #2157975) | Cod sursa (job #1168133)
#include <cstdio>
#include <vector>
using namespace std;
int Cost[100005],i,x,y,N,M,S,stiva[100005],L;
vector <int> v[100005];
void BFS(int nod)
{
for (i=1;i<=N;i++) Cost[i]=-1;
Cost[nod]=0; stiva[++L]=nod;
for (register int i=1;i<=L;i++)
{
for (register int j=0;j<v[stiva[i]].size();j++)
{
if (Cost[v[stiva[i]][j]]==-1)
{
stiva[++L]=v[stiva[i]][j];
Cost[stiva[L]]=Cost[stiva[i]]+1;
}
}
}
for (i=1;i<=N;i++)
printf("%d ",Cost[i]);
}
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);
v[x].push_back(y);
}
BFS(S);
return 0;
}