#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> v[100005];
queue <int> q;
bool viz[100005];
int rez[100005];
int n,m,s;
int i,x,y;
int main()
{
fin>>n>>m>>s;
for(i=1;i<=m;i++){
fin>>x>>y;
if(x!=y){
v[x].push_back(y);
}
}
viz[s]=1;
rez[s]=0;
for(i=0;i<v[s].size();i++){
rez[v[s][i]]=1;
viz[v[s][i]]=1;
q.push(v[s][i]);
}
while(!q.empty()){
x=q.front();
q.pop();
for(i=0;i<v[x].size();i++){
if(!viz[v[x][i]]){
rez[v[x][i]]=rez[x]+1;
viz[v[x][i]]=1;
q.push(v[x][i]);
}
}
}
for(i=1;i<=n;i++){
if(i==s){
fout<<0<<" ";
}
else{
if(rez[i]==0)
fout<<-1<<" ";
else
fout<<rez[i]<<" ";
}
}
return 0;
}