Advertisement
danielvitor23

BFS

Aug 19th, 2021
1,280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int n, m; // Nós, arestas
  5. vector<vector<int>> gr;  // Lista de adjacência
  6. vector<bool> visited;    // Vetor que indica se já foi visitado
  7. vector<int> dist;        // Vetor de distâncias
  8.  
  9. void bfs(int s) {
  10.     dist.assign(n+1, 1e9);
  11.     dist[s] = 0;
  12.     visited.assign(n+1, false);
  13.     visited[s] = true;
  14.  
  15.     queue<int> q;
  16.     q.push(s);
  17.  
  18.     while (!q.empty()) {
  19.         int u = q.front();
  20.         q.pop();
  21.         for (int to : gr[u]) {
  22.             if (visited[to] == false) {
  23.                 visited[to] = true;
  24.                 dist[to] = dist[u] + 1;
  25.                 q.push(to);
  26.             }
  27.         }
  28.     }
  29.  
  30. }
  31.  
  32. int main() {
  33.     cin >> n >> m;
  34.  
  35.     gr.assign(n+1, vector<int>());
  36.  
  37.     for (int i = 0, u, v; i < m; ++i) {
  38.         cin >> u >> v;
  39.         gr[u].push_back(v);
  40.         gr[v].push_back(u);
  41.     }
  42.  
  43.     bfs(1);
  44.    
  45.     for (int i = 1; i <= n; ++i) {
  46.         cout << "Cara: " << i << "; Distancia: " << dist[i] << endl;
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement