Submission #1319617

#TimeUsernameProblemLanguageResultExecution timeMemory
1319617AgageldiCrocodile's Underground City (IOI11_crocodile)C++20
46 / 100
25 ms24216 KiB
#include "bits/stdc++.h"
#include "crocodile.h"
// #include "grader.cpp"
using namespace std;

#define MAXN 3000000
#define ll long long
#define ff first
#define ss second

ll n, a[MAXN], dp[MAXN], vis[MAXN];
vector <pair<ll, ll>> E[MAXN];
int solve(int x) {
  if(dp[x] != -1) return dp[x];
  vector <ll> v = {};
  vis[x] = 1;
  for(auto i : E[x]) {
    if(vis[i.ff]) {
      if(vis[i.ff] == 2) {
        v.push_back(i.ss);
      }
        continue;
    }
    if(dp[i.ff] == -1) {
      ll nd = solve(i.ff) + i.ss;
      v.push_back(nd);
    }
  }
  sort(v.begin(),v.end());
  ll jog = INT_MAX;
  if((int)v.size() >= 2) jog = v[1];
  return dp[x] = jog; 
}

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){
  for(int i = 0;i < M; i++) {
    E[R[i][0]].push_back({R[i][1],L[i]});
    E[R[i][1]].push_back({R[i][0],L[i]});
  }
  memset(dp, -1, sizeof dp);
  for(int i = 0; i < K; i++) {
    vis[P[i]] = 2;
  }
  return solve(0);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...