Advertisement
Norvager

BFS

Nov 8th, 2018
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <cstdio>
  3. #include <iostream>
  4. #include <cmath>
  5. #include <vector>
  6. #include <queue>
  7. #include <algorithm>
  8. using namespace std;
  9. vector<vector <int>> way;
  10. queue<int> q;
  11. vector<bool> used;
  12. vector<int> ans;
  13. void bfs(int pos)
  14. {
  15.     q.pop();
  16.     for (int i = 0; i < way[pos].size(); i++)
  17.         if (used[way[pos][i]]) {
  18.             used[way[pos][i]] = false;
  19.             q.push(way[pos][i]);
  20.             ans.push_back(way[pos][i]);
  21.         }
  22.     if (!q.empty())
  23.         dfs(q.front());
  24.     return;
  25. }
  26.  
  27. int main()
  28. {
  29.     int n, s;
  30.     scanf("%d %d", &n, &s);
  31.     way.resize(n + 1);
  32.     used.resize(n + 1, true);
  33.     ans.push_back(s);
  34.     used[s] = false;
  35.     q.push(s);
  36.     for (int i = 0; i < n - 1; i++)
  37.     {
  38.         int a, b;
  39.         scanf("%d %d", &a, &b);
  40.         way[a].push_back(b);
  41.         way[b].push_back(a);
  42.     }
  43.     bfs(s);
  44.  
  45.     for (int i = 0; i < ans.size(); i++)
  46.         printf("%d ", ans[i]);
  47.  
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement