Submission #1345181

#TimeUsernameProblemLanguageResultExecution timeMemory
1345181nagorn_phRoad Closures (APIO21_roads)C++20
7 / 100
25 ms12088 KiB
#include "roads.h"
#include <bits/stdc++.h>
#define int long long
#define emb emplace_back
#define pii pair <int32_t, int32_t>
#define tiii tuple <int32_t, int32_t, int32_t>
#define all(a) a.begin(), a.end()

using namespace std;

const int N = 1e5 + 5;
const int inf = 1e18;

int32_t n;
vector <pii> adj[N];

std::vector<long long> minimum_closure_costs(int32_t N, std::vector<int32_t> u,
                                             std::vector<int32_t> v,
                                             std::vector<int32_t> w) {
    n = N;
    vector <int> l(n + 1), r(n + 1);
    for (int32_t i = 0; i < n - 1; i++) {
        u[i]++, v[i]++;
        adj[u[i]].emb(w[i], v[i]);
        adj[v[i]].emb(w[i], u[i]);
        r[min(u[i], v[i])] = w[i];
        l[max(u[i], v[i])] = w[i];
    }
    int dp[n + 1][2]; memset(dp, 0, sizeof dp);
    for (int i = 1; i < n; i++) {
        dp[i][0] = min(dp[i - 1][0], dp[i - 1][1]) + r[i];
        dp[i][1] = dp[i - 1][0];
    }
    vector <int> ans(n);
    ans[0] = accumulate(all(w), 0ll);
    ans[1] = min(dp[n - 1][0], dp[n - 1][1]);
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...