Submission #1370305

#TimeUsernameProblemLanguageResultExecution timeMemory
1370305dssfsuper2Closing Time (IOI23_closing)C++20
8 / 100
50 ms20172 KiB
#include "closing.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using pii = pair<ll, ll>;
vector<vector<pii>> adj;
ll n;
void dfs(int node, int cdist=0){

}
int max_score(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W){
    n=N;
    adj.assign(n+1, {});
    for(int i = 0;i<n-1;i++){
        //cerr << U[i] << ' ' << V[i] << ' ' << W[i] << " e\n";
        adj[U[i]].push_back({V[i], W[i]});
        adj[V[i]].push_back({U[i], W[i]});
    }
    ll spent=0;
    ll res =0;
    set<vector<ll>> avl={{0, X, -1}, {0, Y, -1}};
    while(spent<K && !avl.empty()){
        auto top = *(avl.begin());
        //cerr << top[0] << ' ' << top[1] << ' ' << top[2] << " h\n";
        avl.erase(avl.begin());
        auto f=top[0];
        if(spent+f>K)break;
        spent+=f;
        res++;
        for(auto thing:adj[top[1]]){
            if(thing.first==top[2])continue;
            avl.insert({f+thing.second, thing.first, top[1]});
        }
    }
    return res;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...