Submission #1228066

#TimeUsernameProblemLanguageResultExecution timeMemory
1228066goduadzesaba사이버랜드 (APIO23_cyberland)C++20
15 / 100
23 ms7372 KiB
#include "cyberland.h"
#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e18;

double solve(int N, int M, int K, int H,
             vector<int> x, vector<int> y,
             vector<int> c, vector<int> arr) {
    
    vector<pair<int, long long>> v[N];
    for (int i = 0; i < M; i++) {
        v[x[i]].emplace_back(y[i], c[i]);
        v[y[i]].emplace_back(x[i], c[i]);
    }

    arr[0] = 0; // force start from node 0

    vector<long long> d(N, inf);
    priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<>> pq;

    for (int i = 0; i < N; i++) {
        if (arr[i] == 0) {
            d[i] = 0;
            pq.emplace(0, i);
        }
    }

    while (!pq.empty()) {
        auto [dist, u] = pq.top(); pq.pop();
        if (dist > d[u]) continue;
        for (auto [to, cost] : v[u]) {
            if (d[to] > d[u] + cost) {
                d[to] = d[u] + cost;
                pq.emplace(d[to], to);
            }
        }
    }

    if (d[H] == inf) return -1;
    return d[H];
}
#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...