제출 #769938

#제출 시각아이디문제언어결과실행 시간메모리
769938gromperen사이버랜드 (APIO23_cyberland)C++17
15 / 100
40 ms6360 KiB
#include "cyberland.h" #include <bits/stdc++.h> using namespace std; #define ll long long const double 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<double> dist(N, INF); vector<vector<pair<int,int>>> adj(N); 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]}); } priority_queue<pair<double,int>, vector<pair<double,int>>, greater<pair<double,int>>> pq; arr[0] = 0; for (int i = 0; i < N; ++i) { if (arr[i] == 0) pq.push({0, i}); } while(!pq.empty()) { int cur = pq.top().second; double d = pq.top().first; pq.pop(); if (dist[cur] < d) continue; dist[cur] = d; //if (arr[cur] == 0) return d; for (auto [nxt, cost] : adj[cur]) { if (dist[nxt] > d + cost) { dist[nxt] = d + cost; pq.push({dist[nxt], nxt}); } } } if (abs(dist[H] - INF) < 0.01) return -1; return dist[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...