168912025-05-15 16:48:57BucsMateEnergiatakarékos ellenőrzéscpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms2612 KiB
2Elfogadva90ms7744 KiB
subtask25/5
3Elfogadva75ms6572 KiB
4Elfogadva68ms6512 KiB
5Elfogadva68ms6572 KiB
6Elfogadva71ms6628 KiB
7Elfogadva67ms6580 KiB
subtask315/15
8Elfogadva3ms2612 KiB
9Elfogadva3ms2612 KiB
10Elfogadva3ms2620 KiB
11Elfogadva3ms2612 KiB
12Elfogadva3ms2612 KiB
13Elfogadva3ms2612 KiB
14Elfogadva3ms2612 KiB
subtask415/15
15Elfogadva3ms2612 KiB
16Elfogadva3ms2796 KiB
17Elfogadva3ms2612 KiB
18Elfogadva3ms2616 KiB
19Elfogadva3ms2612 KiB
20Elfogadva3ms2612 KiB
21Elfogadva3ms2612 KiB
subtask565/65
22Elfogadva105ms7740 KiB
23Elfogadva104ms7720 KiB
24Elfogadva96ms7852 KiB
25Elfogadva98ms7752 KiB
26Elfogadva96ms7904 KiB
27Elfogadva108ms12756 KiB
28Elfogadva127ms13800 KiB
29Elfogadva116ms10296 KiB
30Elfogadva101ms8756 KiB
31Elfogadva101ms7876 KiB
32Elfogadva112ms7708 KiB
33Elfogadva115ms7752 KiB
34Elfogadva82ms6572 KiB
35Elfogadva82ms6572 KiB
36Elfogadva87ms6688 KiB
37Elfogadva90ms6564 KiB
38Elfogadva86ms6964 KiB
39Elfogadva86ms8244 KiB
40Elfogadva90ms8244 KiB