| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1245908 | daotuankhoi | Cities (BOI16_cities) | C++20 | 772 ms | 40516 KiB | 
#include <bits/stdc++.h>
using namespace std;
#ifdef LOCAL
#include "algo/debug.h"
#else
#define debug(...) 42
#endif
const int64_t INF = 0x3f3f3f3f3f3f3f3f;
int special[5];
const int MAXN = 1e5 + 5;
int64_t dp[1 << 5][MAXN];
vector<pair<int, int>> g[MAXN];
int n, m, k;
void dijkstra(int mask) {
  using T = pair<int64_t, int>;
  priority_queue<T, vector<T>, greater<T>> pq;
  for (int i = 1; i <= n; i++) {
    if (dp[mask][i] != INF) {
      pq.emplace(dp[mask][i], i);
    }
  }
  while (pq.size()) {
    auto [d, u] = pq.top();
    pq.pop();
    if (d > dp[mask][u]) continue;
    for (auto [v, w] : g[u]) {
      if (dp[mask][v] > dp[mask][u] + w) {
        dp[mask][v] = dp[mask][u] + w;
        pq.emplace(dp[mask][v], v);
      }
    }
  }
}
int main() {
  #define NAME ""
  if (fopen(NAME".inp", "r")) {
    freopen(NAME".inp", "r", stdin);
    freopen(NAME".out", "w", stdout);
  }
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n >> k >> m;
  debug(k);
  for (int i = 0; i < k; i++) cin >> special[i];
  int u, v, w;
  k--;
  for (int i = 1; i <= m; i++) {
    cin >> u >> v >> w;
    g[u].emplace_back(v, w);
    g[v].emplace_back(u, w);
  }
  memset(dp, 0x3f, sizeof dp);
  for (int i = 0; i < k; i++) {
    dp[1 << i][special[i]] = 0;
  }
  for (int mask = 0; mask < (1 << k); mask++) {
    for (int sub = (mask - 1) & mask; sub; sub = (sub - 1) & mask) {
      for (int i = 1; i <= n; i++) {
        dp[mask][i] = min(dp[mask][i], dp[sub][i] + dp[mask ^ sub][i]);
      }
    }
    dijkstra(mask);
  }
//  debug(special[k], k);
//  for (int i = 1; i <= n; i++) ans = min(ans, dp[(1 << k) - 1][i]);
  cout << dp[(1 << k) - 1][special[k]] << '\n';
  return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
