제출 #1361482

#제출 시각아이디문제언어결과실행 시간메모리
1361482jackhui100101사이버랜드 (APIO23_cyberland)C++20
0 / 100
27 ms10500 KiB
#include "cyberland.h"

#include <bits/stdc++.h>
using namespace std;
vector<bool> vis(1e5), vab(1e5);
vector<long long> dist(1e5);
vector<vector<pair<int, int>>> adj(1e5);
void dfs(int u){
    vab[u] = 1;
    for (auto x: adj[u]){
        if (!vab[x.first]) dfs(x.first);
    }
}
double solve(int n, int m, int k, int h, vector<int> x, vector<int> y, vector<int> c, vector<int> arr){
    for (int i = 0; i < n; i++){
        vis[i] = 0;
        vab[i] = 0;
        dist[i] = 1e18;
        adj[i].clear();
    }
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
    for (int i = 0; i < m; i++){
        adj[x[i]].push_back({y[i], c[i]});
        adj[y[i]].push_back({x[i], c[i]});
    }
    dfs(0);
    if (vab[h] == 0) return -1;
    for (int i = 0; i < n; i++){
        if (i == 0 || arr[i] == 0) pq.push({0, i});
    }
    while (pq.size()){
        int d = pq.top().first, in = pq.top().second;
        pq.pop();
        if (vis[in]) continue;
        vis[in] = 1;
        dist[in] = d;
        for (auto z: adj[in]){
            pq.push({d + z.second, z.first});
        }
    }
    return double(dist[h]);
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…