제출 #1329263

#제출 시각아이디문제언어결과실행 시간메모리
1329263vache_kocharyanCrocodile's Underground City (IOI11_crocodile)C++20
0 / 100
1 ms344 KiB
#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
const ll INF = LLONG_MAX;

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
    vector<vector<pair<int,int>>> adj(N+1);

    for (int i = 0; i < M; i++) {
        int u = R[i][0] + 1;
        int v = R[i][1] + 1;
        int w = L[i];
        adj[u].push_back({v, w});
        adj[v].push_back({u, w});
    }

    vector<ll> dist(N+1, INF);
    vector<int> cnt(N+1, 0);

    priority_queue<pair<ll,int>, vector<pair<ll,int>>, greater<pair<ll,int>>> pq;

    // Start from safe nodes
    for (int i = 0; i < K; i++) {
        int node = P[i] + 1;
        pq.push({0, node});
    }

    while (!pq.empty()) {
        auto [d, u] = pq.top();
        pq.pop();

        if (cnt[u] == 2) continue;

        cnt[u]++;
        dist[u] = d;

        for (auto [v, w] : adj[u]) {
            pq.push({d + w, v});
        }
    }

    return (int)dist[1];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...