#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,start[1000001],t[2][1000001],viz[1000001],c[1000001],nod,aux[1000001];
void lista()
{
int i,k=0,x,y;
f>>n>>m>>nod;
for(i=1;i<=m;i++)
{
f>>x>>y;
k++;
t[0][k]=y;
t[1][k]=start[x];
start[x]=k;
}
}
void bfs(int a)
{
int i,nrarce,ps=1,pf=1,p;
viz[a]=1;
c[ps]=a;
while(ps<=pf)
{
nrarce=aux[c[ps]];
p=start[c[ps]];
while(p!=0)
{
if(viz[t[0][p]]==0)
{
pf++;
c[pf]=t[0][p];
viz[t[0][p]]=1;
aux[t[0][p]]=nrarce+1;
}
p=t[1][p];
}
ps++;
}
for(i=1;i<=n;i++)
{
if(i==a)
g<<"0 ";
else
{
if(aux[i]==0)
g<<"-1 ";
else
g<<aux[i]<<" ";
}
}
}
int main()
{
int i;
lista();
bfs(nod);
return 0;
}