#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, i, j, k, ok, minim, s, x;
int vizit[100100], cost[100100], y;
vector < int > v[100100];
void write(){
for(i = 1; i <= n; i ++)
fout << cost[i] << " ";
return;
}
void initialize(){
for(i = 1; i <= n; i ++)
cost[i] = -1;
return;
}
void bfs(int val){
vizit[val] = 1;
for(int i = 0; i < v[val].size(); i ++){
if(vizit[v[val][i]] == 0){
cost[v[val][i]] = cost[val] + 1;
bfs(v[val][i]);
}
}
return;
}
void read(){
fin >> n >> m >> s;
initialize(); cost[s] = 0;
for(i = 1; i <= m; i ++){
fin >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
return;
}
int main(){
read();
bfs(s);
write();
return 0;
}