Submission #979901

#TimeUsernameProblemLanguageResultExecution timeMemory
979901vjudge1Closing Time (IOI23_closing)C++17
8 / 100
74 ms25428 KiB
#include "closing.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vi = vector <int>;
using vll = vector <ll>;
using ii = pair <ll, ll>;
using vii = vector <ii>;

const ll MAXN = 2E5+16, INF = ll(1E18)+16;
vii adj[MAXN];

int max_score (int n, int u1, int u2, ll k, vi u, vi v, vi w) {
    fill(adj, adj+n, vii({}));
    for (ll i = 0; i < n-1; i++) {
        adj[u[i]].push_back({ v[i], w[i] });
        adj[v[i]].push_back({ u[i], w[i] });
    }
    priority_queue <ii> pq;
    vll dis(n, INF);
    dis[u1] = 0;
    dis[u2] = 0;
    pq.push({ 0, u1 });
    pq.push({ 0, u2 });
    ll ans = 0;
    while (pq.size()) {
        ll u = pq.top().second; pq.pop();
        if (k-dis[u] < 0) break;
        k -= dis[u];
        ans++;
        for (auto [v, w] : adj[u]) {
            if (dis[v] == INF) {
                dis[v] = dis[u]+w;
                pq.push({ -dis[v], v });
            }
        }
    }
    return int(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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...