/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Wrong Answer 1ms 532.0 KiB
#2 Wrong Answer 42ms 532.0 KiB

Code

#include <bits/stdc++.h>
using namespace std;

using ll = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T; cin >> T;

    while (T--) {
        int N; cin >> N;
        vector<ll> W(N);
        for (int i = 0; i < N; i++) cin >> W[i];

        vector<vector<pair<int,ll>>> adj(N);
        for (int i = 0; i < N - 1; i++) {
            int u, v; ll c;
            cin >> u >> v >> c;
            u--; v--;
            adj[u].emplace_back(v,c);
            adj[v].emplace_back(u,c);
        }

        ll global_max = LLONG_MIN;

        function<ll(int,int)> dfs = [&](int u, int p) -> ll {
            ll best1 = 0, best2 = 0;
            for (auto &[to,cost] : adj[u]) {
                if (to == p) continue;
                ll val = dfs(to,u) - 2*cost;
                if (val > best1) {
                    best2 = best1;
                    best1 = val;
                } else if (val > best2) {
                    best2 = val;
                }
            }
            ll cur = W[u] + best1 + best2;
            if (cur > global_max) global_max = cur;
            return W[u] + best1;
        };

        dfs(0,-1);
        cout << global_max << "\n";
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1205 E. Make Cycle in Tree
Contest
Educational Round 1
Language
C++17 (G++ 13.2.0)
Submit At
2025-07-14 16:26:40
Judged At
2025-07-14 16:26:40
Judged By
Score
0
Total Time
42ms
Peak Memory
532.0 KiB