답안 #1059642

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1059642 2024-08-15T06:39:47 Z noyancanturk 봉쇄 시간 (IOI23_closing) C++17
0 / 100
85 ms 57668 KB
#include "closing.h"

#include<bits/stdc++.h>
using namespace std;

#define pb push_back

const int lim=2e5+100;

using lint=long long;

using pii=pair<lint,lint>;

int n;

vector<pii>v[lim];

vector<int>ds;

void dfs(int node,int par){
    int cnt=0;
    for(auto[j,c]:v[node]){
        if(j==par){
            assert(!cnt);
            cnt++;
            continue;
        }
        ds[j]=ds[node]+c;
        dfs(j,node);
    }
}

vector<int>getdist(int root){
    ds=vector<int>(n);
    dfs(root,-1);
    return ds;
}

int max_score(int N, int X, int Y, long long K,
              std::vector<int> U, std::vector<int> V, std::vector<int> W)
{
    n=N;
    for(int i=0;i<n;i++){
        v[i].clear();
    }
    for(int i=0;i<n-1;i++){
        v[U[i]].pb({V[i],W[i]});
        v[V[i]].pb({U[i],W[i]});
    }
    vector<int>dist1=getdist(X),dist2=getdist(Y);
    if(2*K<dist1[Y]){
        //case 1
        priority_queue<pii,vector<pii>,greater<pii>>pq;
        pq.push({0,X});
        pq.push({0,Y});
        bool vis[n]{};
        int ans=0;
        while(pq.size()){
            auto[c,node]=pq.top();
            pq.pop();
            if(K<c)break;
            vis[node]=1;
            K-=c;
            ans++;
            for(auto[j,d]:v[node]){
                if(vis[j])continue;
                pq.push({c+d,j});
            }
        }
        return ans;
    }else{
        //case 2 3 5 6
        assert(0);
        return -1;
    }
    return -1;
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 10072 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 85 ms 57668 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 10080 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 10080 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 10080 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 10072 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 10072 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 10072 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 10072 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 10072 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -