Pagini recente » Cod sursa (job #1052449) | Cod sursa (job #438997) | Cod sursa (job #363448) | Cod sursa (job #1895915) | Cod sursa (job #1387123)
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
const int MAXN=100010;
vector <int> a[MAXN];
int n,m,s,x,y;
int cost[MAXN], bf[MAXN];
void bfs(int s)
{
fill(cost+1,cost+n+1,-1);
cost[s]=0;
bf[1]=s;
int l=1;
for(int i=1;i<=l;i++)
{
for(int j=0;j<a[bf[i]].size();j++)
if(cost[a[bf[i]][j]]==-1)
{
l++; bf[l]=a[bf[i]][j];
cost[a[bf[i]][j]]=cost[bf[i]]+1;
}
}
}
void afis ()
{
for(int i=1;i<=n;i++) cout<<cost[i]<<" ";
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
cin>>n>>m>>s;
for(int i=1;i<=m;i++) {
cin>>x>>y;
a[x].push_back(y);
}
bfs(s); afis();
return 0;
}