Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define MAX 100
- using namespace std;
- vector<int> grafo[MAX];
- int marc[MAX], sub[MAX], pai[MAX], nivel[MAX];
- void dfs (int v){
- marc[v] = 1;
- sub[v] = 1;
- for (int i = 0; i < grafo[v].size(); i++){
- int viz = grafo[v][i];
- if (marc[viz] == 0){
- pai[viz] = v;
- nivel[viz] = nivel[v] + 1;
- dfs(viz);
- sub[v] += sub[viz];
- }
- }
- }
- int main (){
- int n, m; scanf("%d %d", &n, &m);
- for (int i = 1; i <= m; i++){
- int a, b; scanf("%d %d", &a, &b);
- grafo[a].push_back(b);
- grafo[b].push_back(a);
- }
- pai[0] = 0;
- nivel[0] = 0;
- dfs(0);
- for(int i = 0; i < n; i++) {
- printf("%d-> pai: %d nivel: %d sub: %d\n", i, pai[i], nivel[i], sub[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement