#include "swap.h"
#include <queue>
#include <vector>
#include <cstdio>
using namespace std;
// zero indexing
int n, m, dist[100005], p[100005], dumbdist[100005];
bool vis[100005];
vector<pair<int, int>> adj[100005];
void dijkstra(int s) {
for (int i = 0; i < n; i++) dist[i] = 1e9+5;
for (int i = 0; i < n; i++) vis[i] = false;
priority_queue<pair<int, int>> q;
dist[s] = 0;
q.push({0, s});
p[s] = -1;
while(!q.empty()) {
int node = q.top().second;
q.pop();
if (vis[node]) continue;
vis[node] = true;
for (auto u: adj[node]) {
if (!vis[u.first]) {
if (max(dist[node],u.second) < dist[u.first]) {
dist[u.first] = max(dist[node],u.second);
p[u.first] = node;
q.push({-dist[u.first], u.first});
}
}
}
}
}
void help_dumbdijkstra(int s, int nxt) { // put final vertex here
if (p[s] != -1) help_dumbdijkstra(p[s], s);
for (auto u: adj[s]) {
if (u.first != p[s] && u.first != nxt) {
if (p[s] != -1 && nxt != -1) dumbdist[s] = min(min(max(dist[s], u.second), max(dist[u.first], u.second)), dumbdist[s]);
else dumbdist[s] = min(max(dist[u.first], u.second), dumbdist[s]);
}
else if (u.first == p[s]) {
dumbdist[s] = min(max(dumbdist[u.first], u.second), dumbdist[s]);
}
}
}
void dumbdijkstra(int s) { // put final vertex here
for (int i = 0; i < n; i++) dumbdist[i] = 1e9+5;
help_dumbdijkstra(s, -1);
}
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++) {
adj[u[i]].push_back({v[i], w[i]});
adj[v[i]].push_back({u[i], w[i]});
}
}
int getMinimumFuelCapacity(int x, int y) {
dijkstra(x);
// for (int i = 0; i < n; i++) printf("%d " ,dist[i]);
// printf("\n");
// for (int i = 0; i < n; i++) printf("%d ", p[i]);
// printf("\n");
dumbdijkstra(y);
// for (int i = 0; i < n; i++) printf("%d ", dumbdist[i]);
// printf("\n");
if (dumbdist[y] > 1e9) return -1;
return dumbdist[y];
}
# | 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... |