Submission #1215558

#TimeUsernameProblemLanguageResultExecution timeMemory
1215558qwusha봉쇄 시간 (IOI23_closing)C++20
0 / 100
124 ms35252 KiB
#include <bits/stdc++.h>
#include "closing.h"
using namespace std;
#define fi first
#define se second
typedef long long ll;
typedef long double ld;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
ll inf = 1e15;

vector<vector<pair<ll, ll>>> g;

vector<ll> dist;
vector<int> v, u, w;

void dfs(ll x, ll d=0) {
    dist[x] = d;
    for (auto [y, ti] : g[x]) {
        if (dist[y] == -1) {
            dfs(y, d + ti);
        }
    }
}



int max_score(int n, int x, int y, ll k, vector<int> U, vector<int> V, vector<int> W) {
    g.resize(n);
    v = V;
    u = U;
    w = W;
    for (int i = 0; i < n - 1; i++) {
        g[u[i]].push_back({v[i], w[i]});
        g[v[i]].push_back({u[i], w[i]});
    }
    dist.assign(n, -1);
    dfs(x);
    vector<ll> vec;
    for (ll i = 0; i < n; i++) {
        vec.push_back(dist[i]);
    }
    dist.assign(n, -1);
    dfs(y);
    for (ll i = 0; i < n; i++) {
        vec.push_back(dist[i]);
    }
    sort(vec.begin(), vec.end());
    int cnt = 0;
    for (ll i = 0; i < vec.size(); i++) {
        if (k >= vec[i]) {
            k -= vec[i];
            cnt++;
        } else {
            break;
        }
    }
    return cnt;
}

#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...