Pagini recente » Cod sursa (job #1412143) | Cod sursa (job #1439911) | Cod sursa (job #88663) | Cod sursa (job #1966758) | Cod sursa (job #2763203)
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#define FOR(i , n) for(int i = 0 ; i < (n) ; i++)
#define apare printf("apare");
#define endl "\n"
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int , int> pii;
////==================================================
const int inf = INT_MAX;
vector<int> adj[100011];
vector<bool> visited(100011 , false);
vector<int> bfs(int start , int n){
queue<int> q;
vector<int> dist(n+1 , 0);
visited[start] = true;
q.push(start);
while(!q.empty()){
int a = q.front();
q.pop();
for(auto it : adj[a]){
if(!visited[it]){
visited[it] = true;
q.push(it);
dist[it] = dist[a] + 1;
}
}
}
return dist;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
freopen("bfs.in" , "r" , stdin);
freopen("bfs.out" , "w" , stdout);
int n , m , start;
cin >> n >> m;
cin >> start;
int n1 , n2;
FOR(i , m){
cin >> n1 >> n2;
adj[n1].push_back(n2);
}
vector<int>ret = bfs(start , n);
for(int i = 1 ; i <= n ; i++){
if(visited[i])
cout << ret[i] << " ";
else
cout << "-1 ";
}
return 0x0;
}