Submission #1017143

#TimeUsernameProblemLanguageResultExecution timeMemory
1017143SiliconSquaredClosing Time (IOI23_closing)C++17
8 / 100
55 ms20564 KiB
using namespace std;
#include "closing.h"
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#define ll long long
#define ld long double
#define INF 1000000000000000000

struct city{
    vector<pair<int,int>> v;
    city(){}
};
vector<city> v;
int max_score(int n,int x,int y,ll k,vector<int> U,vector<int> V, vector<int> W){
    v.clear();
    v.resize(n);
    for (int i=0;i<n-1;i++){
        v[U[i]].v.push_back({V[i],W[i]});
        v[V[i]].v.push_back({U[i],W[i]});
    }
    int z=0;
    priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<pair<ll,int>>> q;
    q.push({0,x});
    q.push({0,y});
    pair<ll,int> p;
    set<int> s;
    while (!q.empty()&&q.top().first<=k){
        p=q.top();
        q.pop();
        if (s.find(p.second)!=s.end()){continue;}
        s.insert(p.second);
        k-=p.first;
        z++;
        for (auto i:v[p.second].v){
            q.push({p.first+i.second,i.first});
        }
    }
    return z;
}
#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...