제출 #1222979

#제출 시각아이디문제언어결과실행 시간메모리
1222979nikd봉쇄 시간 (IOI23_closing)C++20
8 / 100
112 ms29112 KiB
#include "closing.h"
#include <bits/stdc++.h>
#include <vector>
using ll = long long;
using namespace std;

int max_score(int n, int x, int y, long long k,
              std::vector<int> U, std::vector<int> V, std::vector<int> W)
{
    vector<ll> dst;
    vector<vector<array<ll, 2>>> adj(n);
    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]});
    }
    function<void(int, int, ll)> find_dst = [&](int v, int p, ll d){
        dst.push_back(d);
        for(auto [u, w]: adj[v]){
            if(u == p) continue;
            if(d+w > k) continue;
            find_dst(u, v, d+w);
        }
        return;
    };
    find_dst(x, -1, 0);
    find_dst(y, -1, 0);
    int sol = 0;
    sort(dst.begin(), dst.end());
    for(ll d: dst){
        if(k-d >= 0){
            k-= d;
            sol++;
        }
        else break;
    }
    return sol;
}
#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...