제출 #1243537

#제출 시각아이디문제언어결과실행 시간메모리
1243537longgggg악어의 지하 도시 (IOI11_crocodile)C++17
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> #define Longgggg ios_base::sync_with_stdio(0); cin.tie(0); #define ll long long #define endl '\n' using namespace std; // Bitwise #define MASK(i) (1LL << (i)) #define BIT(x, i) (1LL & ((x) >> (i))) #define ON(x, i) ((x) | MASK(i)) #define OFF(x, i) ((x) & ~MASK(i)) #define LASTBIT(mask) ((mask) & -(mask)) // Other #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define FORD(i, a, b) for (int i = (a); i >= (b); i--) #define mod(x, k) ((((x) % (k)) + (k)) % (k)) #define all(x) begin(x), end(x) #define fi first #define se second #define IN "A.in" #define OUT "A.out" #define DEBUG "debug.out" const int INF = (int) 1e9+5; const ll LINF = (ll) 1e18; const ll MOD = (ll) 1e9+7; const int mxN = 100005; ll travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { int n = N, m = M, k = K; vector <vector <pair <int, int>>> adj(n); FOR(i, 0, m-1) { adj[R[i][0]].push_back({R[i][1], L[i]}); adj[R[i][1]].push_back({R[i][0], L[i]}); } // Dijkstra from exits priority_queue <pair <ll, ll>, vector <pair <ll, ll>>, greater<>> q; vector <pair <ll, ll>> d(n, {LINF, LINF}); // Two shortest distance FOR(i, 0, k-1) { q.push({0, P[i]}); d[P[i]] = {0, 0}; } while (!q.empty()) { ll u = q.top().se, dis = q.top().fi; q.pop(); if (dis > d[u].se) continue; for (auto &x : adj[u]) { ll v = x.fi, w = x.se; if (d[v].fi > dis + w) { // Shortest distance if (d[u].se < d[u].fi) q.push({d[v].fi, v}); d[v].se = d[v].fi; d[v].fi = dis + w; } else if (d[v].se > dis + w) { d[v].se = dis + w; // Second shortest distance q.push({d[v].se, v}); } } } return d[0].se; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...