#include "highway.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pll pair<ll, ll>
#define pii pair<int, int>
#define fs first
#define sc second
#define pb push_back
const int maxn=90000;
vector<pii> ad[maxn+1];
int et[maxn+1],ep[maxn+1],tt;
void dfs(int v,int p){
et[tt++]=v;
for(auto[u,w]:ad[v])if(u!=p){
ep[u]=w;
dfs(u,v);
}
}
void find_pair(int n, std::vector<int> u, std::vector<int> v, int A, int B) {
ll a=A,b=B;
ll d=ask(vector<int>(n-1,0))/a;
for(int i=0;i<n-1;i++){
ad[u[i]].pb({v[i],i});
ad[v[i]].pb({u[i],i});
}
dfs(0,0);
int l=0,r=n-1;
while(l<r){
int m=(l+r)/2;
vector<int> a(n-1);
for(int i=1;i<=m;i++){
a[ep[et[i]]]=1;
}
if(ask(a)==b*d)r=m;
else l=m+1;
}
tt=0;
int x=et[l];
dfs(x,x);
l=0,r=n-1;
while(l<r){
int m=(l+r)/2;
vector<int> a(n-1);
for(int i=1;i<=m;i++){
a[ep[et[i]]]=1;
}
if(ask(a)==b*d)r=m;
else l=m+1;
}
answer(x,et[l]);
}
# | 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... |