Submission #1320776

#TimeUsernameProblemLanguageResultExecution timeMemory
1320776kawhietCrocodile's Underground City (IOI11_crocodile)C++20
100 / 100
360 ms71360 KiB
#include <bits/stdc++.h>
#include "crocodile.h"
using namespace std;

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) {
  vector<vector<array<int, 2>>> g(N);
  for (int i = 0; i < M; i++) {
    int u = R[i][0], v = R[i][1], w = L[i];
    g[u].push_back({v, w});
    g[v].push_back({u, w});
  }
  priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<pair<long long, int>>> q;
  vector<int> vis(N);
  for (int i = 0; i < K; i++) {
    q.push({0, P[i]});
    vis[P[i]]++;
  }
  while (!q.empty()) {
    auto [d, u] = q.top();
    q.pop();
    if (vis[u] == 1) {
      vis[u]++;
      if (u == 0) {
        return d;
      }
      for (auto [v, w] : g[u]) {
        q.emplace(d + w, v);
      }
    } else {
      vis[u]++;
    }
  }
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...