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>
#pragma GCC optimize("Ofast")
#define AquA cin.tie(0);ios_base::sync_with_stdio(0);
#define fs first
#define sc second
#define p_q priority_queue
using namespace std;
struct no{
vector<pair<int,int> > ch;
};
vector<no> v;
int n;
int a,b;
long long dis;
vector<int> chg;
int find_one(int rt,vector<pair<int,int> >& x){
int l=0,r=(int)(x.size())-1;
while(r>l){
int mid=(l+r)/2;
for(int i=0;i<=mid;i++){
chg[x[i].sc]=1;
}
if(ask(chg)!=dis){
r=mid;
}
else{
l=mid+1;
}
for(int i=0;i<=mid;i++){
chg[x[i].sc]=0;
}
}
return x[l].fs;
}
void find_pair(int N, vector<int> U, vector<int> V, int A, int B) {
a=A;
b=B;
n=N;
v.resize(n);
int m=U.size();
for(int i=0;i<m;i++){
v[U[i]].ch.push_back({V[i],i});
v[V[i]].ch.push_back({U[i],i});
}
int l=0,r=m-1;
chg.resize(m,0);
dis=ask(chg);
while(r>l){
int mid=(l+r)/2;
for(int i=0;i<=mid;i++){
chg[i]=1;
}
if(ask(chg)==dis){
l=mid+1;
}
else{
r=mid;
}
for(int i=0;i<=mid;i++){
chg[i]=0;
}
}
//edge = U[l],V[l];
queue<int> q;
vector<int> vis(n);
q.push(U[l]);
q.push(V[l]);
vis[U[l]]=1;
vis[V[l]]=-1;
vector<pair<int,int> > c,d;
c.push_back({U[l],-1});
d.push_back({V[l],-1});
while(q.size()){
auto h=q.front();
q.pop();
for(auto y:v[h].ch){
if(!vis[y.fs]){
vis[y.fs]=vis[h];
if(vis[h]==1){
c.push_back(y);
}
else{
d.push_back(y);
}
}
else{
chg[y.sc]=1;
}
}
}
answer(0,1);
return;
reverse(c.begin(),c.end());
reverse(d.begin(),d.end());
for(auto h:d){
chg[h.sc]=1;
}
dis=ask(chg);
int e=find_one(U[l],c);
for(auto h:d){
chg[h.sc]=0;
}
for(auto h:c){
chg[h.sc]=1;
}
dis=ask(chg);
int f=find_one(V[l],d);
answer(e,f);
}
# | 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... |