Submission #1081042

#TimeUsernameProblemLanguageResultExecution timeMemory
1081042KiprasClosing Time (IOI23_closing)C++17
8 / 100
69 ms25360 KiB
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;

const ll maxN = 2e5+10;

vector<pair<ll, ll>> adj[maxN];

ll been[maxN];

int max_score(int n, int x, int y, long long k, vector<int> U, vector<int> V, vector<int> W){

    for(int i = 0; i <= n; i++) {
        been[i]=0;
        adj[U[i]].clear();
        adj[V[i]].clear();
    }
    for(int 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<pair<ll, ll>, vector<pair<ll, ll>>, greater<>> q;

    q.push({0, y});
    q.push({0, x});

    ll res = 0;

    while(!q.empty()) {

        ll v = q.top().second, w = q.top().first;
        q.pop();

        if(been[v])continue;
        if(w>k)break;

        been[v]=1;
        k-=w;
        res++;
        for(auto i : adj[v]) {
            if(been[i.first])continue;
            q.push({w+i.second, i.first});
        }
    }

    return res;

}

#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...