注意题目是有向图。

#include<bits/stdc++.h>
// #define int long long
#define double long double
#define x first
#define y second
using namespace std;
typedef long long LL;
typedef long long ll;
typedef pair<int,int> PII;
const int N=2e6+10;
const int M=1e3+10;
int mod=1e9+7;
int dist[N];
vector<int> adj[N];
int vis[N];
void bfs(int sx){
    queue<PII> q;
    q.push({sx,0});
    dist[sx]=0;
    while(!q.empty()){
        int u=q.front().first;
        int d=q.front().second;
       q.pop();
        if(vis[u]) continue;
        vis[u]=1;
        dist[u]=d; 
        for(int v:adj[u]){
            if(!vis[v]){
                q.push({v,d+1});
            }
        }
    }
}

void solve(){
    int n,m,st;
    cin>>n>>m>>st;
    for(int i=1;i<=m;i++){
        int u,v;
        cin>>u>>v;
        adj[u].push_back(v);
    }   
    bfs(st);
    for(int i=1;i<=n;i++){
        if(!vis[i]) cout<<-1<<" ";
        else cout<<dist[i]<<" ";
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int _;
    _=1;
    //cin>>_;
    while(_--){
        solve();
    }
}