Submission #1327054

#TimeUsernameProblemLanguageResultExecution timeMemory
1327054riafhasan2010악어의 지하 도시 (IOI11_crocodile)C++17
100 / 100
517 ms55364 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const ll inf = 1e17;

ll travel_plan(int n, int m, int R[][2], int L[], int k, int p[]) {
  vector<vector<pair<int, int>>> g(n);
  for (int i = 0; i < m; i++) {
    g[R[i][0]].push_back({R[i][1], L[i]});
    g[R[i][1]].push_back({R[i][0], L[i]});
  }
  vector<ll> best(n, inf), second_best(n, inf);
  vector<bool> vis(n, 0);
  priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq;
  for (int i = 0; i < k; i++) {
    best[p[i]] = second_best[p[i]] = 0;
    pq.push({0, p[i]});
  }
  while (!pq.empty()) {
    auto [c, u] = pq.top(); pq.pop();
    if (vis[u]) continue;
    vis[u] = true;
    for (auto [v, w] : g[u]) {
      second_best[v] = min(second_best[v], max(best[v], c + w));
      best[v] = min(best[v], c + w);
      if (second_best[v] < 1e9) pq.push({second_best[v], v});
    }
  }
  return second_best[0];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...