168922025-05-15 16:51:51BucsMateEnergiatakarékos ellenőrzéscpp17Elfogadva 100/100131ms13884 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 bekapcsolva hagyjuk mielőtt végig lemennénk
            //ha kikapcsoljuk, annak koltsege oda-vissza +8 a lepegetesek miatt
            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
2Elfogadva103ms7732 KiB
subtask25/5
3Elfogadva83ms6520 KiB
4Elfogadva68ms6572 KiB
5Elfogadva83ms6664 KiB
6Elfogadva68ms6572 KiB
7Elfogadva67ms6572 KiB
subtask315/15
8Elfogadva3ms2612 KiB
9Elfogadva3ms2612 KiB
10Elfogadva4ms2612 KiB
11Elfogadva3ms2612 KiB
12Elfogadva3ms2616 KiB
13Elfogadva3ms2612 KiB
14Elfogadva3ms2612 KiB
subtask415/15
15Elfogadva3ms2808 KiB
16Elfogadva3ms2852 KiB
17Elfogadva3ms2612 KiB
18Elfogadva3ms2612 KiB
19Elfogadva3ms2532 KiB
20Elfogadva3ms2724 KiB
21Elfogadva3ms2724 KiB
subtask565/65
22Elfogadva97ms7808 KiB
23Elfogadva96ms7944 KiB
24Elfogadva119ms7732 KiB
25Elfogadva120ms7928 KiB
26Elfogadva98ms7756 KiB
27Elfogadva115ms12596 KiB
28Elfogadva118ms13884 KiB
29Elfogadva131ms10344 KiB
30Elfogadva104ms8848 KiB
31Elfogadva125ms7804 KiB
32Elfogadva103ms7808 KiB
33Elfogadva105ms7664 KiB
34Elfogadva82ms6572 KiB
35Elfogadva93ms6556 KiB
36Elfogadva82ms6544 KiB
37Elfogadva97ms6620 KiB
38Elfogadva98ms7132 KiB
39Elfogadva86ms8252 KiB
40Elfogadva90ms8244 KiB