제출 #769941

#제출 시각아이디문제언어결과실행 시간메모리
769941gromperen사이버랜드 (APIO23_cyberland)C++17
15 / 100
25 ms5712 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; pq.push({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 (arr[nxt] == 0 && dist[nxt] > 0) { dist[nxt] = 0; pq.push({dist[nxt], nxt}); } 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...