#include <iostream>
#include <bits/stdc++.h>
#include <vector>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
int main()
{
vector<int> a[1001];
int n,m,start,x,y;
fin>>n>>m>>start;
while(fin>>x>>y){
a[x].push_back(y);
}
for(int i=0;i<=n;i++){
sort(a[i].begin(),a[i].end());
}
int distance[1001]={-1};
for(int i=1;i<=n;i++){
distance[i]=-1;
}
distance[start]=0;
queue<int> orase;
int vizite[1001]={0};
vizite[start]=1;
orase.push(start);
while(!orase.empty()){
int city=orase.front();
for(auto vecin:a[city]){
if (vizite[vecin]==0){
vizite[vecin]=1;
orase.push(vecin);
distance[vecin]=distance[city]+1;
}
}
orase.pop();
}
for (int i=1;i<=n;i++){
if (vizite[i]==0){
fout << "-1 ";
}else{
fout << distance[i] << " ";
}
}
return 0;
}