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 "highway.h"
#include <bits/stdc++.h>
#define FOR(i,p,k) for(int i=(p);i<=(k);++i)
#define REP(i,n) FOR(i,0,(n)-1)
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
void find_pair(int n, vector<int> u, vector<int> v, int a_int, int b_int){
int m = u.size();
ll a = a_int, b = b_int;
vector<vector<pii>> g(n);
REP(i, m){
g[u[i]].emplace_back(v[i], i);
g[v[i]].emplace_back(u[i], i);
}
if(m == n-1){
vector<int> pyt(m, 0);
ll samea = ask(pyt);
int kr = 0;
for(int lewo = 0, prawo = m-1; 1;){
if(lewo == prawo){kr = lewo; break;}
int sr = (lewo+prawo)>>1;
pyt = vector<int>(m, 0);
FOR(i, lewo, sr) pyt[i] = 1;
if(ask(pyt) > samea) prawo = sr;
else lewo = sr+1;
}
int x = u[kr], y = v[kr];
pyt = vector<int>(m, 0);
function<void(int, int)> dfs_oznacz = [&](int w, int o){
for(pii i : g[w]) if(i.fi != o) pyt[i.se] = 1, dfs_oznacz(i.fi, w);
};
dfs_oznacz(x, y);
int dlx = (ask(pyt)-samea)/(b-a);
int dly = samea/a - dlx-1;
vector<pii> vec;
function<void(int, int, int, int)> dfs_gl = [&](int w, int o, int gl, int id){
if(!gl) return void(vec.emplace_back(id, w));
for(pii i : g[w]) if(i.fi != o) dfs_gl(i.fi, w, gl-1, i.se);
};
dfs_gl(x, y, dlx, kr);
int s = 0;
for(int lewo = 0, prawo = vec.size()-1; 1;){
if(lewo == prawo){s = vec[lewo].se; break;}
int sr = (lewo+prawo)>>1;
pyt = vector<int>(m, 0);
FOR(i, lewo, sr) pyt[vec[i].fi] = 1;
if(ask(pyt) > samea) prawo = sr;
else lewo = sr+1;
}
vec.clear();
dfs_gl(y, x, dly, kr);
int t = 0;
for(int lewo = 0, prawo = vec.size()-1; 1;){
if(lewo == prawo){t = vec[lewo].se; break;}
int sr = (lewo+prawo)>>1;
pyt = vector<int>(m, 0);
FOR(i, lewo, sr) pyt[vec[i].fi] = 1;
if(ask(pyt) > samea) prawo = sr;
else lewo = sr+1;
}
answer(s, t);
}
}
# | 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... |