제출 #985134

#제출 시각아이디문제언어결과실행 시간메모리
985134SabyrAlCyberland (APIO23_cyberland)C++17
8 / 100
3034 ms6804 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;

double djicstra(int n, int m, int k, int h, int s, vector<vector<pll> >& g) {
    vector<ll> dist(n, 1e15);
    dist[s] = 0;
    priority_queue<pll, vector<pll >, greater<pll > > q;
    q.push({0, s});
    while(!q.empty()) {
        auto [d, v] = q.top();
        q.pop();
        if (d != dist[v]) continue;
        for (auto [to, c] : g[v]) {
            q.push({c + d, to});
            dist[to] = min(c + d, dist[to]);
        }
    }
    return dist[h];
}

double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) {
    vector<vector<pll > > g(N);
    for (int i = 0; i < M; i++) {
        g[x[i]].push_back({y[i], c[i]});
        g[y[i]].push_back({x[i], c[i]});
    }
    double ans = djicstra(N, M, K, H, 0, g);
    for (int i = 1; i < N; i++) {
        if (arr[i] == 0) {
            ans = min(djicstra(N, M, K, H, i, g), ans);
        }
    }
    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...