Submission #1000449

#TimeUsernameProblemLanguageResultExecution timeMemory
1000449MardonbekhazratovClosing Time (IOI23_closing)C++17
8 / 100
53 ms17236 KiB
// #pragma GCC optimize("Ofast")
// #pragma GCC optimize("unroll-loops")
#include "closing.h"
#include <queue>
#include <vector>

using namespace std;

#define ff first
#define ss second

vector<vector<pair<int,int>>>v;
vector<bool>vis;

int max_score(int N, int X, int Y, long long K,
              vector<int> U, vector<int> V, vector<int> W){
    v.assign(N,vector<pair<int,int>>(0));
    vis.assign(N,false);
    for(int i=0;i<N-1;i++){
        v[U[i]].push_back({V[i],W[i]});
        v[V[i]].push_back({U[i],W[i]});
    }
    priority_queue<pair<long long,int>>q;
    int ans=2;
    vis[X]=true;
    vis[Y]=true;
    for(auto [z,w]:v[X]) q.push({-w,z});
    for(auto [z,w]:v[Y]) q.push({-w,z});
    while(!q.empty()){
        auto [d,x]=q.top();
        q.pop();
        if(K+d<0){
            break;
        }
        K+=d;
        vis[x]=true;
        ans++;
        for(auto [z,w]:v[x]) if(!vis[z]) q.push({d-w,z});
    }
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...