제출 #1215545

#제출 시각아이디문제언어결과실행 시간메모리
1215545qwusha봉쇄 시간 (IOI23_closing)C++20
0 / 100
383 ms18760 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());
int inf = 1e9;

vector<vector<pair<int, int>>> 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++;
        }
        for (auto [uv, ti] : g[ve]) {
            if (dist[uv] > dist[ve] + ti) {
                dist[uv] = dist[ve] + ti;
                if (dist[uv] <= cur) {
                    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...