80分求助
查看原帖
80分求助
668800
_Kimi_楼主2022/8/12 19:42

rt

#include<bits/stdc++.h>
using namespace std;
vector<int> g[100010];
int n, m, ans;
int ad(int a){
    int ans = 0;
    while(a > 1){
        ans++;
        a /= 2;
    }
    return ans;
}
int dfs(int a, int f){
    if(g[a].size() == 1) return 0;
    int ada = ad(g[a].size() - 1) + 1;
    for(int i = 0; i < g[a].size(); i++){
        if(g[a][i] != f) ada += dfs(g[a][i], a) + 1;
    }
    return ada;
}
int main(){
    scanf("%d", &n);
    for(int i = 1; i < n; i++){
        int a, b;
        scanf("%d%d", &a, &b);
        g[a].push_back(b);
        g[b].push_back(a);
    }
    printf("%d", dfs(1, -1));
}
2022/8/12 19:42
加载中...