Submission #1249673

#TimeUsernameProblemLanguageResultExecution timeMemory
1249673thewizardmanCrocodile's Underground City (IOI11_crocodile)C++20
100 / 100
427 ms84708 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using pil = pair<int, ll>; using pli = pair<ll, int>; const static inline ll inf = 0x3f3f3f3f3f3f3f3f; static priority_queue<pli, vector<pli>, greater<pli>> pq; static vector<pil> adj[100000]; static ll dist[100000]; static __int8_t flag[100000]; int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) { memset(dist, 0x3f, sizeof dist); for (int i = 0; i < m; i++) adj[r[i][0]].emplace_back(r[i][1], l[i]), adj[r[i][1]].emplace_back(r[i][0], l[i]); for (int i = 0; i < k; i++) flag[p[i]] = 1, pq.emplace(dist[p[i]] = 0, p[i]); while (!pq.empty()) { auto [d, u] = pq.top(); pq.pop(); if (flag[u] == 0) { flag[u] = 1; continue; } if (flag[u] == 2) continue; flag[u] = 2; dist[u] = d; for (auto& [v, w]: adj[u]) if (flag[v] != 2) pq.emplace(dist[u] + w, v); } // for (int i = 0; i < n; i++) cerr << (int) flag[i] << ' ' << dist[i] << '\n'; return dist[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...