제출 #1069893

#제출 시각아이디문제언어결과실행 시간메모리
1069893MohamedFaresNebiliClosing Time (IOI23_closing)C++17
8 / 100
64 ms21140 KiB
#include <bits/stdc++.h>
#include "closing.h"

        using namespace std;

        vector<pair<int, int>> adj[200005];
        int D[200005];

        int max_score(int N, int X, int Y, long long K,
            vector<int> U, vector<int> V, vector<int> W) {
            for(int l = 0; l < N; l++) D[l] = 1e9 + 7, adj[l].clear();
            for(int l = 0; l < N - 1; l++) {
                adj[U[l]].push_back({V[l], W[l]});
                adj[V[l]].push_back({U[l], W[l]});
            }
            priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
            pq.push({0, X}); pq.push({0, Y});
            D[X] = D[Y] = 0;
            int res = 0; long long cur = 0;
            while(!pq.empty()) {
                int A = pq.top().second;
                long long B = pq.top().first; pq.pop();
                if(cur + B > K) break;
                cur += B; res++;
                for(auto u : adj[A]) {
                    if(D[u.first] > D[A] + u.second) {
                        D[u.first] = D[A] + u.second;
                        pq.push({D[u.first], u.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...