Submission #980101

#TimeUsernameProblemLanguageResultExecution timeMemory
980101vjudge1Closing Time (IOI23_closing)C++17
8 / 100
71 ms22096 KiB
#include "closing.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector <ll>;
using vi = vector <int>;

const ll MAXN = 2E5+16;
vector <pair <ll, ll> > adj[MAXN];

int max_score (int n, int u1, int u2, ll k, vi u, vi v, vi w) {
    fill(adj, adj+n, vector <pair <ll, ll> > ({}));
    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] });
    }
    vll dis(n);
    vector <char> vis(n, false);
    priority_queue <pair <ll, ll> > pq;
    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];
        vis[u] = true;
        ans++;
        for (auto [v, w] : adj[u]) {
            if (vis[v]) continue;
            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...