Submission #851174

#TimeUsernameProblemLanguageResultExecution timeMemory
851174aymanrsCrocodile's Underground City (IOI11_crocodile)C++17
89 / 100
2041 ms55124 KiB
#include <bits/stdc++.h>
#include "crocodile.h"
    #pragma GCC optimize("O3,unroll-loops")
    #pragma GCC target("avx,avx2,bmi,bmi2,popcnt,lzcnt")
using namespace std;

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
  vector<pair<int, int>> g[N];
  for(int i = 0;i < M;i++){
    g[R[i][0]].emplace_back(R[i][1], L[i]);
    g[R[i][1]].emplace_back(R[i][0], L[i]);
  }
  long long dp[N];
  for(int i = 0;i < N;i++) dp[i] = LONG_LONG_MAX;
  for(int i = 0;i < K;i++) dp[P[i]] = 0;
  for(int _ = 0;_ < N+2;_++){
    for(int i = 0;i < N;i++){
      long long m = LONG_LONG_MAX, s = LONG_LONG_MAX;
      for(auto [to, c] : g[i]){
        if(dp[to] == LONG_LONG_MAX) continue;
        if(dp[to]+c <= m) {
          s = m;
          m = dp[to]+c;
        } else if(dp[to]+c < s){
          s = dp[to]+c;
        }
      }
      dp[i] = min(dp[i], s);
    }
  }
  return dp[0];
}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...