Submission #1353818

#TimeUsernameProblemLanguageResultExecution timeMemory
1353818Red_Inside봉쇄 시간 (IOI23_closing)C++20
8 / 100
182 ms52316 KiB
#include <bits/stdc++.h>

#define ll long long
#define pb push_back
#define all(v) v.begin(), v.end()

using namespace std;


namespace lol
{
const int maxn=2e5+100;

int n, x, y;
ll k;
ll dist[maxn][2];
vector <pair <int, int> > edge[maxn];

void dfs(int v, int pred, int t) {

    for(auto [to, w] : edge[v]) {
        if(to == pred) continue;
        dist[to][t] = dist[v][t] + w;
        dfs(to, v, t);
    }
}

int solve(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W) {
    n = N;
    x = X + 1;
    y = Y + 1;
    k = K;
    for(int i = 1; i <= n; ++i) {
        edge[i].clear();
    }
    for(int i = 0; i < n - 1; ++i) {
        int l = U[i] + 1;
        int r = V[i] + 1;
        int w = W[i];
        edge[l].pb({r, w});
        edge[r].pb({l, w});
    }
    dist[x][0] = 0;
    dist[y][1] = 0;
    dfs(x, -1, 0);
    dfs(y, -1, 1);
    multiset <ll> st;
    for(int i = 1; i <= n; ++i) {
        st.insert(dist[i][0]);
        st.insert(dist[i][1]);
    }
    int ans = 0;
    while(st.size()) {
        int s = *st.begin();
        if(s <= k) {
            k -= s;
            ans++;
        }
        else
            break;
        st.erase(st.begin());
    }
    return ans;
};

}

int max_score(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W) {
    return lol::solve(N, X, Y, K, U, V, W);
}

#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...