Advertisement
perchuts

BFS

Jun 13th, 2022 (edited)
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. // BFS
  4. // Visita os vértices em ordem de distância para a origem
  5. // Complexidade: O(N+M), com N = número de vértices e M = número de arestas
  6.  
  7. using namespace std;
  8.  
  9. const int MAXN = 500001;
  10.  
  11. vector<int>grafo[MAXN];
  12.  
  13. bool visitado[MAXN];
  14.  
  15. void bfs(int origem){
  16.     queue<int>fila;
  17.     fila.push(origem);
  18.  
  19.     while(!fila.empty()){
  20.         int u = fila.front();
  21.         fila.pop();
  22.  
  23.         for(auto v:grafo[u]){
  24.             if(!visitado[v]){
  25.  
  26.                 visitado[v] = 1;
  27.                 fila.push(v);
  28.             }
  29.         }
  30.     }
  31. }  
  32.  
  33. int main(){
  34.     int n, m;//n = quantidade de vértices, m = quantidade de arestas
  35.    
  36.     cin>>n>>m;
  37.  
  38.     for(int i=1;i<=m;++i){
  39.         int u,v;
  40.         cin>>u>>v;
  41.         grafo[u].push_back(v);
  42.         grafo[v].push_back(u);//se a aresta é direcionada, apague essa linha
  43.     }
  44.    
  45.     for(int i=1;i<=n;++i){
  46.         if(visitado[i]==0){
  47.             bfs(i);
  48.         }
  49.     }
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement