#include "swap.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define pii pair<int, int>
#define ff first
#define ss second
#define unm unordered_map
vector<pii> q[200100];
int pos[200100];
vector<int> h;
int n, m;
void dfs(int v, int cl){
pos[v] = 1;
int sz = 0;
for(pii e: q[v]){
int to = e.ff;
int w = e.ss;
if(w > cl) continue;
sz ++;
if(pos[to]) continue;
dfs(to, cl);
}
h.pb(sz);
}
bool check(int k, int x, int y){
h.clear();
for(int i=0; i<n; i++){
pos[i] = 0;
}
dfs(x, k);
if(!pos[y]) return 0;
int ok = 0;
int cnt = 0;
for(int x: h){
if(x == 1) cnt++;
if(x > 2) ok = 1;
}
return (cnt != 2 or ok);
}
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 l = U[i], r = V[i], x = W[i];
q[l].pb({r, x});
q[r].pb({l, x});
}
}
int getMinimumFuelCapacity(int X, int Y) {
int l=1, r=1e9 + 1;
if(!check(r, X, Y)) return -1;
while(l < r){
int mid = (l + r)/2;
if(check(mid, X, Y)) r = mid;
else l = mid + 1;
}
return r;
}
# | 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... |