#include "highway.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define sz(x) (int)x.size()
#define ALL(x) begin(x), end(x)
#define loop(n, i) for (int i = 0; i < n; i++)
typedef signed i32;
typedef long long i64;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<i32> vi32;
typedef vector<vi32> vvi32;
typedef vector<vi> vvi;
typedef vector<ii> vii;
typedef vector<vii> vvii;
void find_pair(i32 N, vi32 U, vi32 V, i32 A, i32 B)
{
vvii adj(N);
int M = sz(U);
loop(M, i)
{
adj[U[i]].pb({V[i], i});
adj[V[i]].pb({U[i], i});
}
int disST = ask(vi32(M, 0)) / A;
vi dis(N);
vii cand;
auto dfs = [&](auto &&self, int i, int prev) -> void
{
for (auto [j, ix] : adj[i])
if (j != prev)
{
dis[j] = dis[i] + 1;
if (dis[j] == disST)
cand.pb({j, ix});
self(self, j, i);
}
};
dfs(dfs, 0, 0);
int lo = 0, hi = sz(cand);
while (hi > lo)
{
int m = (lo + hi) / 2;
vi32 q(M);
for (int i = 0; i <= m; i++)
q[cand[i].second] = 1;
if (ask(q) > disST * (i64)A)
hi = m;
else
lo = m + 1;
}
answer(0, cand[lo].first);
}
# | 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... |