fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5.  
  6. int n,e;
  7. cin >> n >> e;
  8.  
  9. vector<vector<int>> g(n+5);
  10.  
  11. for (int i = 0; i < e; i++){
  12. int a, b;
  13. cin >> a >> b;
  14. g[a].push_back(b);
  15. g[b].push_back(a);
  16. }
  17.  
  18. int source; cin >> source;
  19.  
  20. unordered_map<int, bool> visited;
  21. queue<int> q;
  22. unordered_map<int, int> level;
  23.  
  24. q.push(source);
  25. visited[source] = true;
  26. level[source] = 0;
  27.  
  28. while(!q.empty()){
  29.  
  30. int parent = q.front();
  31. q.pop();
  32.  
  33. for(auto child : g[parent]){
  34.  
  35. if(visited[child] == false){
  36. q.push(child);
  37. visited[child] = true;
  38. level[child] = level[parent]+1;
  39. }
  40.  
  41. }
  42.  
  43.  
  44. }
  45.  
  46. for (int i = 1; i <= n; i++){
  47. if(visited[i] == true){
  48. cout << level[i] << " ";
  49. }
  50. }
  51.  
  52.  
  53. return 0;
  54. }
Success #stdin #stdout 0s 5328KB
stdin
5 4
1 2
2 3
2 4
3 5
2
stdout
1 0 1 1 2