This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "swap.h"
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int n, m;
vector<pair<int, int>> ad[N];
void init(int N, int M, vector<int> U, vector<int> V, vector<int> W) {
n = N; m = M;
for (int i = 0; i < m; ++i) {
int u = U[i], v = V[i], w = W[i];
ad[u].push_back({v, w});
ad[v].push_back({u, w});
}
}
int f[N][N];
void sktra(int x, int y) {
memset(f, 63, sizeof f);
using T = tuple<int, int, int>;
priority_queue<T, vector<T>, greater<T>> q;
q.emplace(f[x][y] = 0, x, y);
while (q.size()) {
int d, x, y; tie(d, x, y) = q.top(); q.pop();
if (d != f[x][y]) continue;
for (auto duck : ad[x]) {
int v, w; tie(v, w) = duck;
if (v != y && f[v][y] > max(w, d))
q.emplace(f[v][y] = max(w, d), v, y);
}
for (auto duck : ad[y]) {
int v, w; tie(v, w) = duck;
if (v != x && f[x][v] > max(w, d))
q.emplace(f[x][v] = max(w, d), x, v);
}
}
}
int getMinimumFuelCapacity(int X, int Y) {
sktra(X, Y);
return f[Y][X] > 1e9 ? -1 : f[Y][X];
}
# | 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... |