제출 #754460

#제출 시각아이디문제언어결과실행 시간메모리
754460HaciyevAlik사이버랜드 (APIO23_cyberland)C++17
15 / 100
1271 ms8696 KiB
#include "cyberland.h"
#include <bits/stdc++.h>
const int mx=100005;
std::vector<std::pair<long long,long long>> g[mx];
long long used[mx],dis[mx];
std::priority_queue<std::pair<long long,long long>> pq;
double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
    for(int i=0;i<mx;++i) {g[i].clear();}
    for(int i=0;i<mx;++i) dis[i]=100000000000;
    memset(used,0,sizeof(used));
    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]});
    }
    dis[0]=0;
    pq.push({0,0});
    while(!pq.empty()) {
        int a=pq.top().second; pq.pop();
        if(used[a]) continue;
        used[a]=1;
        for(int i=0;i<(int)g[a].size();++i) {
            long long v=g[a][i].first,w=g[a][i].second;
            if(dis[a]+w<dis[v]) {
                dis[v]=dis[a]+w;
                pq.push({-dis[v],v});
            }
        }
    }
    if(!used[H]) return -1;
    return dis[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...