#include <bits/stdc++.h>
#include "cyberland.h"
#include <vector>
using namespace std;
using ll = long long;
const ll INF = 1e18;
vector<vector<ll> > adjList;
vector<vector<ll> > weightMat;
vector<vector<double> > memo;
vector<vector<bool> > visited;
double DP(ll currentNode, ll numSpecialsLeft, ll N) {
// cout << currentNode << " " << numSpecialsLeft << endl;
if (numSpecialsLeft < 0) {
return (double)INF;
}
if (currentNode == N - 1) {
return 0.0;
}
if (visited[currentNode][numSpecialsLeft]) {
return memo[currentNode][numSpecialsLeft];
}
visited[currentNode][numSpecialsLeft] = true;
double minPossible = (double)INF;
for (ll v: adjList[currentNode]) { // currentNode -> v
minPossible = min(minPossible, DP(v, numSpecialsLeft, N) + (double)weightMat[currentNode][v]);
}
return memo[currentNode][numSpecialsLeft] = minPossible;
}
double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) {
adjList.clear();
weightMat.clear();
adjList.resize(N);
weightMat.resize(N, vector<ll>(N, INF));
for (ll i = 0; i < M; i++) {
adjList[x[i]].push_back(y[i]);
adjList[y[i]].push_back(x[i]);
weightMat[x[i]][y[i]] = c[i];
weightMat[y[i]][x[i]] = c[i];
}
visited.clear();
memo.clear();
visited.resize(N, vector<bool>(N, false));
memo.resize(N, vector<double>(K + 1, INF));
double response = DP(0, K, N);
if (response >= INF) {
return -1.0;
} else {
return response;
}
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |