제출 #1215548

#제출 시각아이디문제언어결과실행 시간메모리
1215548qwusha봉쇄 시간 (IOI23_closing)C++20
0 / 100
97 ms21828 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;

int max_score(int n, int x, int y, ll k, vector<int> u, vector<int> v, vector<int> w) {
    g.resize(n);
    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]});
    }
    vector<ll> dist(n, inf);
    set<pair<ll, ll>> st;
    dist[x] = 0;
    dist[y] = 0;
    int cnt = 0;
    st.insert({0, x});
    st.insert({0, y});
    ll cur = k;
    while (!st.empty()) {
        auto pa = *st.begin();
        st.erase(pa);
        ll d = pa.fi, ve = pa.se;
        if (cur >= d) {
            cur -= d;
            cnt++;
        } else {
            break;
        }
        for (auto [uv, ti] : g[ve]) {
            if (dist[uv] == inf) {
                dist[uv] = dist[ve] + ti;
                st.insert({dist[uv], uv});
            }
        }
    }
    return cnt;
}

/*
signed main() {

}*/
#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...