제출 #1305465

#제출 시각아이디문제언어결과실행 시간메모리
1305465aaaaaaaa봉쇄 시간 (IOI23_closing)C++20
8 / 100
100 ms21304 KiB
#include "closing.h"
#include <bits/stdc++.h>
using namespace std;

const int mxN = 2e5 + 100;



int max_score(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W)
{
    vector<pair<int, int>> adj[N + 5];

    for(int i = 0; i < (int) U.size(); ++i){
        adj[U[i]].push_back({V[i], W[i]});
        adj[V[i]].push_back({U[i], W[i]});
    }

    queue<pair<long long, int>> q;



    vector<bool> vis(N + 5, 0);
    vector<long long> dist;

    int ans = 0;


    q.push({0, X});
    vis[X] = 1;



    while(q.size()){
        auto tp = q.front();
        q.pop();
        dist.push_back(tp.first);
        vis[tp.second] = 1;
        for(auto it : adj[tp.second]){
            if(!vis[it.first]){
                q.push({(long long) it.second + tp.first, it.first});
                vis[it.first] = 1;
            }
        }
    }

    while(q.size()) q.pop();
    for(int i = 0; i <= N + 2; ++i) vis[i] = 0;

    q.push({0, Y});
    vis[Y] = 1;



    while(q.size()){
        auto tp = q.front();
        q.pop();
        dist.push_back(tp.first);
        vis[tp.second] = 1;
        for(auto it : adj[tp.second]){
            if(!vis[it.first]){
                q.push({(long long) it.second + tp.first, it.first});
                vis[it.first] = 1;
            }
        }
    }



    sort(dist.begin(), dist.end());

    for(auto it : dist){
        K -= it;
        if(K < 0) break;
        ans += 1;
    }

    return ans;
}
#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...