제출 #1327973

#제출 시각아이디문제언어결과실행 시간메모리
1327973vahagng악어의 지하 도시 (IOI11_crocodile)C++20
0 / 100
14 ms16204 KiB
#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;

const int NN = 1e5 + 10;
#define ll long long

vector<pair<int, ll>> adj[NN];
ll dp[1001][1001][2];

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
  for (int i = 0; i < M; i++) {
    adj[R[i][0]].push_back({ R[i][1], L[i] });
    adj[R[i][1]].push_back({ R[i][0], L[i] });
  }
  for (int i = 0; i < N; i++) {
    for (int j = 1; j <= N; j++) {
      dp[i][j][0] = dp[i][j][1] = INT64_MAX;
    }
  }
  for (int j = 1; j <= N; j++) {
    for (int i = 0; i < K; i++) {
      dp[P[i]][j][0] = dp[P[i]][j][1] = 0;
    }
    for (int i = 0; i < N; i++) {
      for (auto [u, w] : adj[i]) {
        if (dp[u][j-1][1] + w <= dp[i][j][0]) {
          dp[i][j][1] = dp[i][j][0];
          dp[i][j][0] = dp[u][j-1][1] + w;
        }else if(dp[u][j-1][1] + w <= dp[i][j][1]){
          dp[i][j][1] = dp[u][j-1][1] + w;
        }
      }
    }
  }
  return dp[0][N][1];
}


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