Submission #1258923

#TimeUsernameProblemLanguageResultExecution timeMemory
1258923khoile08Crocodile's Underground City (IOI11_crocodile)C++17
100 / 100
273 ms45620 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; #define FOR(i,a,b) for(int i = a; i <= b; i++) #define FOD(i,a,b) for(int i = a; i >= b; i--) //#define int long long #define fi first #define se second #define pb push_back #define ll long long #define ull unsigned long long #define db double #define lcm(a,b) a / __gcd(a, b) * b #define ii pair<int,int> #define iii pair<int,pair<int,int>> #define iv pair<pair<int,int>,pair<int,int>> #define sq(a) (a) * (a) #define MASK(i) (1LL << i) const int inf = 2e9; const ll INF = 1e18; const int mod = 1e9 + 7; const int N = 1e5 + 5; const int M = 1e6 + 5; int n, m, k; int R[M][2], L[M], P[N]; ll d[2][N]; vector<ii> g[N]; int travel_plan(int n, int m, int R[][2], int L[], int k, int P[]) { priority_queue<ii,vector<ii>,greater<ii>> pq; FOR(i, 0, n - 1) d[0][i] = d[1][i] = INF; FOR(i, 0, m - 1) { g[R[i][0]].pb({R[i][1], L[i]}); g[R[i][1]].pb({R[i][0], L[i]}); } FOR(i, 0, k - 1) { d[0][P[i]] = d[1][P[i]] = 0; pq.push({0, P[i]}); } while(!pq.empty()) { int cost = pq.top().fi; int u = pq.top().se; pq.pop(); if(cost != d[1][u]) continue; for(auto H : g[u]) { int v = H.fi; int w = H.se; if(d[0][v] == cost + w && d[0][v] < d[1][v]) { d[1][v] = d[0][v]; pq.push({d[1][v], v}); } if(d[0][v] > cost + w) { if(d[0][v] < d[1][v]) pq.push({d[0][v], v}); d[1][v] = d[0][v]; d[0][v] = cost + w; } else if(d[1][v] > cost + w) { d[1][v] = cost + w; pq.push({d[1][v], v}); } } } return d[1][0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...