Submission #1299629

#TimeUsernameProblemLanguageResultExecution timeMemory
1299629hssaan_arifCrocodile's Underground City (IOI11_crocodile)C++20
100 / 100
1394 ms117796 KiB
#include <iostream> #include <vector> #include <set> #include <ctime> using namespace std; #define pb push_back #define ll long long #define fi first #define se second const int N = 1e6 + 5; vector<pair<int,int>> lis[N]; int travel_plan(int n, int m, int R[][2], int L[], int k, int P[]) { ll Dis[n], vi[n] = {}; for (int i = 0; i < n; i++) Dis[i] = 1e18; for (int i = 0; i < m; i++) { int u = R[i][0], v = R[i][1]; lis[u].pb({v, L[i]}); lis[v].pb({u, L[i]}); } set<vector<ll>> pq; for (int i = 0; i < k; i++) { Dis[P[i]] = 0; pq.insert({0, P[i], P[i]}); vi[P[i]] = 1; } while (!pq.empty() && Dis[0] == 1e18) { auto cur = *pq.begin(); pq.erase(pq.begin()); int v = cur[1]; ll d = cur[0]; if (vi[v] != 1) { vi[v]++; continue; } Dis[v] = d; vi[v]++; for (auto &u : lis[v]) { if (vi[u.fi] >= 2 || Dis[u.fi] != 1e18) continue; pq.insert({Dis[v] + u.se, u.fi, v}); } } return Dis[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...