Advertisement
vitormartinotti

Untitled

Nov 7th, 2023
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define MAX 100
  3.  
  4. using namespace std;
  5.  
  6. vector<int> grafo[MAX];
  7. int marc[MAX], sub[MAX], pai[MAX], nivel[MAX];
  8.  
  9. void dfs (int v){
  10.     marc[v] = 1;
  11.     sub[v] = 1;
  12.     for (int i = 0; i < grafo[v].size(); i++){
  13.         int viz = grafo[v][i];
  14.         if (marc[viz] == 0){
  15.             pai[viz] = v;
  16.             nivel[viz] = nivel[v] + 1;
  17.             dfs(viz);
  18.  
  19.             sub[v] += sub[viz];
  20.         }
  21.     }
  22. }
  23.  
  24. int main (){
  25.     int n, m; scanf("%d %d", &n, &m);
  26.     for (int i = 1; i <= m; i++){
  27.         int a, b; scanf("%d %d", &a, &b);
  28.         grafo[a].push_back(b);
  29.         grafo[b].push_back(a);
  30.     }
  31.  
  32.     pai[0] = 0;
  33.     nivel[0] = 0;
  34.     dfs(0);
  35.  
  36.     for(int i = 0; i < n; i++) {
  37.         printf("%d-> pai: %d  nivel: %d  sub: %d\n", i, pai[i], nivel[i], sub[i]);
  38. }
  39. }
  40.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement