168912025-05-15 16:48:57BucsMateEnergiatakarékos ellenőrzéscpp17Accepted 100/100127ms13800 KiB
#include <iostream>
#include <vector>
using namespace std;

const int maxn = 1e5+5;

vector<int> adj[maxn];
long long dp[maxn][2] = {};
int meret[maxn];

void dfs(int v, int p){
    meret[v] = 1;

    for(int x:adj[v]){
        if(x != p){
            dfs(x,v);
            meret[v] += meret[x];
            //dp[i][0] a megoldas az i reszfajaban
            //dp[i][1] a megoldas az i reszfajaban ha az i-t kikapcsoljuk mielőtt végig lemennénk
            //ennek a koltsege oda-vissza +8
            dp[v][0] += min(dp[x][0]+8, dp[x][0]+2*meret[x]);
            dp[v][1] += dp[x][0]+2*meret[x];
        }
    }
}

int main(){
    int n;
    cin >> n;
    for(int i = 1; i < n; i++){
        int a, b; 
        cin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }

    dfs(1,0);

    cout << dp[1][0] << endl;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms2612 KiB
2Accepted90ms7744 KiB
subtask25/5
3Accepted75ms6572 KiB
4Accepted68ms6512 KiB
5Accepted68ms6572 KiB
6Accepted71ms6628 KiB
7Accepted67ms6580 KiB
subtask315/15
8Accepted3ms2612 KiB
9Accepted3ms2612 KiB
10Accepted3ms2620 KiB
11Accepted3ms2612 KiB
12Accepted3ms2612 KiB
13Accepted3ms2612 KiB
14Accepted3ms2612 KiB
subtask415/15
15Accepted3ms2612 KiB
16Accepted3ms2796 KiB
17Accepted3ms2612 KiB
18Accepted3ms2616 KiB
19Accepted3ms2612 KiB
20Accepted3ms2612 KiB
21Accepted3ms2612 KiB
subtask565/65
22Accepted105ms7740 KiB
23Accepted104ms7720 KiB
24Accepted96ms7852 KiB
25Accepted98ms7752 KiB
26Accepted96ms7904 KiB
27Accepted108ms12756 KiB
28Accepted127ms13800 KiB
29Accepted116ms10296 KiB
30Accepted101ms8756 KiB
31Accepted101ms7876 KiB
32Accepted112ms7708 KiB
33Accepted115ms7752 KiB
34Accepted82ms6572 KiB
35Accepted82ms6572 KiB
36Accepted87ms6688 KiB
37Accepted90ms6564 KiB
38Accepted86ms6964 KiB
39Accepted86ms8244 KiB
40Accepted90ms8244 KiB