using namespace std;
#include <fstream>
#include <vector>
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int Q[100010], p, u;
vector< vector<int> > vec;
vector<int> dmin;
bool uz[100010];
int main()
{
int i, n, m, s, a, b;
vector<int>::iterator it;
fin>>n>>m>>s;
for(i=0; i<=n; ++i) vec.push_back(dmin);
for(i=0; i<=n; ++i) dmin.push_back(-1);
for(i=0; i<m; ++i)
{
fin>>a>>b;
vec[a].push_back(b);
}
Q[0]=s;
dmin[s]=0;
uz[s]=1;
while(p<=u)
{
a=Q[p++];
for(it=vec[a].begin(); it!=vec[a].end(); ++it)
if(!uz[*it])
{
Q[++u]=*it;
dmin[*it]=1+dmin[a];
uz[*it]=1;
}
}
for(i=1; i<=n; ++i) fout<<dmin[i]<<' ';
return 0;
}