/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 6ms 7.664 MiB
#2 Accepted 5ms 7.277 MiB
#3 Accepted 5ms 6.777 MiB
#4 Accepted 10ms 7.762 MiB
#5 Accepted 84ms 8.629 MiB
#6 Accepted 156ms 8.723 MiB
#7 Accepted 112ms 8.18 MiB
#8 Accepted 64ms 6.973 MiB
#9 Accepted 165ms 7.516 MiB
#10 Accepted 208ms 9.18 MiB
#11 Accepted 141ms 8.52 MiB
#12 Accepted 155ms 9.445 MiB
#13 Accepted 67ms 9.062 MiB
#14 Accepted 217ms 7.934 MiB
#15 Accepted 94ms 8.051 MiB
#16 Accepted 57ms 7.328 MiB
#17 Accepted 46ms 7.891 MiB
#18 Accepted 31ms 7.52 MiB
#19 Accepted 142ms 15.754 MiB
#20 Accepted 149ms 15.75 MiB
#21 Accepted 140ms 15.797 MiB
#22 Accepted 177ms 26.273 MiB
#23 Accepted 240ms 15.473 MiB
#24 Accepted 248ms 15.477 MiB
#25 Accepted 204ms 15.578 MiB
#26 Accepted 15ms 7.34 MiB

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5;
int a[N], d[N], sum;
vector <int> g[N];
bool Dfs(int v, int p){
    bool ok = (a[v] == 1);
    for(int u:g[v]){
        if(u != p){
            d[u] = d[v] + 1;
            ok |= Dfs(u, v);
        }
    }
    if(ok == true and v != p) sum += 2;
    return ok;
}
void dfs(int v, int p){
    for(int u:g[v]){
        if(u != p){
            d[u] = d[v] + 1;
            dfs(u, v);
        }
    }
}
void sol(){
    int n;
    cin >> n;
    for(int i = 0; i < n; i++) cin >> a[i], d[i] = 0, g[i].clear();
    for(int i = 1; i < n; i++) {
        int u, v;
        cin >> u >> v;
        u--, v--;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs(0, 0);
    int node = 0, mx = 0;
    for(int i = 0; i < n; i++){
        if(a[i]){
            if(d[i] >= mx){
                mx = d[i];
                node = i;
            }
        }
        d[i] = 0;
    }
    sum = 0;
    bool ok =  Dfs(node, node);
    mx = 0;
    for(int i = 0; i < n; i++){
        if(a[i]) mx = max(mx, d[i]);
    }
    cout << sum - mx << endl;
}
signed main(){
    int t;
    cin >> t;
    while(t--){
        sol();
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1078 Apple on Tree
Contest
Bangladesh 2.0
Language
C++20 (G++ 13.2.0)
Submit At
2024-08-16 16:56:15
Judged At
2024-08-16 16:56:15
Judged By
Score
100
Total Time
248ms
Peak Memory
26.273 MiB