Submission #799016

#TimeUsernameProblemLanguageResultExecution timeMemory
799016M7kraCyberland (APIO23_cyberland)C++17
8 / 100
28 ms7344 KiB
#include "cyberland.h" #include <iostream> #include <queue> using namespace std; typedef pair<int, int> pii; typedef pair<double, int> pdd; 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) { vector<vector<pii>> adjacent(N); for (int i = 0; i < M; i++) { adjacent[x[i]].push_back({y[i], c[i]}); adjacent[y[i]].push_back({x[i], c[i]}); } priority_queue<pdd, vector<pdd>, greater<pdd>> pq; queue<int> q; vector<bool> visited(N); vector<bool> visited2(N); q.push(0); visited[0] = true; arr[0] = 0; while (!q.empty()) { int vertex = q.front(); q.pop(); if (arr[vertex] == 0) { pq.push({0, vertex}); visited2[vertex] = true; } for (pii v : adjacent[vertex]) { if (visited[v.first]) continue; visited[v.first] = true; q.push(v.first); } } while (!pq.empty()) { pdd vertex = pq.top(); pq.pop(); if (vertex.second == H) return vertex.first; for (pdd v : adjacent[vertex.second]) { if (visited2[v.first]) continue; visited2[v.first] = true; pq.push({vertex.first + v.second, v.first}); } } return -1; }
#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...