Advertisement
vitormartinotti

Grafos e DFS

Oct 31st, 2023
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define _ ios_base::sync_with_stdio(0);cin.tie(0);
  3. #define MAX 50010
  4.  
  5. using namespace std;
  6.  
  7. vector<int> grafo[MAX];
  8. int visitado[MAX];
  9.  
  10. //DFS
  11. void dfs (int v){
  12.     visitado[v] = 1;
  13.     for (int i = 0; i < grafo[v].size(); i++){
  14.         int viz = grafo[v][i];
  15.         if (visitado[viz] == 0){
  16.             dfs(viz);
  17.         }
  18.     }
  19. }
  20.  
  21. int main (){ _
  22.  
  23.     int n, m; cin >> n >> m; //arestas
  24.  
  25.     //Leitura do grafo
  26.     for(int i = 0; i < m; i++){
  27.         int a, b; cin >> a >> b;
  28.         grafo[a].push_back(b);
  29.         grafo[b].push_back(a);
  30.     }
  31.  
  32.     //Imprime vĂ©rtice, grau e vizinhança
  33.     for (int i = 0; i < n; i++){
  34.         printf("Vertice: %d Grau: %d Vizinhos: ", i, grafo[i].size());
  35.         for (int j = 0; j < grafo[i].size(); j++){
  36.             printf("%d ", grafo[i][j]);
  37.         }
  38.         printf("\n");
  39.     }
  40.    
  41.     //Contar componentes conexas
  42.     int conexas = 0;
  43.     for (int i = 0; i < n; i++){
  44.         if (visitado[i] == 0){
  45.             dfs(i);
  46.             conexas++;
  47.         }
  48.     }
  49.    
  50.     printf("Componentes conexas: %d", conexas);
  51.    
  52. }
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement