#include <vector>
#include <fstream>
#define curSiz v[q[in]].size()
#define curAsc v[q[in]][i]
#define curPoz q[in]
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector < int > v[100010];
int n,m,s,a,b,ver[100010],q[100010],i,in,sf;
int main()
{
fin>>n>>m>>s;
for(i=1 ; i<=m ; ++i)
{
fin>>a>>b;
v[a].push_back(b);
}
ver[ s ] = 1;
q[ 1 ] = s;
in = 1;
sf = 1;
while( in <= sf )
{
for( i=0 ; i < curSiz ; ++i )
{
if( ver[ curAsc ] == 0 )
{
ver[ curAsc ] = ver[ curPoz ] + 1;
++sf;
q[ sf ] = curAsc;
}
}
++in;
}
for(i=1 ; i<=n ; ++i)
{
fout<<ver[ i ] - 1<<' ';
}
return 0;
}