답안 #1060404

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1060404 2024-08-15T13:55:00 Z n1k 봉쇄 시간 (IOI23_closing) C++17
8 / 100
99 ms 38196 KB
#include "closing.h"
#include <bits/stdc++.h>

using namespace std;

using ll = long long;

int max_score(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W){
    vector<vector<array<int, 2>>> g(N);
    vector c(2, vector<ll>(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]});
    }
    function<void(int, int, vector<ll>&)> dfs = [&](int u, int p, vector<ll> &c){
        for(auto [v, cost]:g[u]){
            if(v==p){
                continue;
            }
            c[v]+=c[u] + cost;
            dfs(v, u, c);
        }
    };

    dfs(X, -1, c[0]);
    dfs(Y, -1, c[1]);

    int ans = 0;
    vector vis(2, vector<int>(N));
    priority_queue<array<ll, 3>, vector<array<ll, 3>>, greater<array<ll, 3>>> pq;
    // (cost, node, start x or y)
    pq.push({0, X, 0});
    pq.push({0, Y, 1});
    while(pq.size()){
        auto [cost, u, start] = pq.top();
        pq.pop();
        if(vis[start][u]){
            continue;
        }
        vis[start][u]=1;
        if(K<cost){
            break;
        }
        cerr << u << " " << cost << " " << start << endl;
        ans++;
        K-=cost;
        for(auto [v, _]:g[u]){
            pq.push({c[start][v], v, start});
        }
    }
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 600 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 90 ms 31016 KB Output is correct
2 Correct 90 ms 38196 KB Output is correct
3 Correct 99 ms 4436 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 0 ms 360 KB 1st lines differ - on the 1st token, expected: '30', found: '24'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 0 ms 360 KB 1st lines differ - on the 1st token, expected: '30', found: '24'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 0 ms 360 KB 1st lines differ - on the 1st token, expected: '30', found: '24'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 600 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 600 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 600 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 600 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 600 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -