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 MAX 1000000000000000000
using namespace std;
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<ii> vi;
vector<vi> G;
vector<int> hl;
ll conc[110];
int isq[110];
ll m,a,b,n;
vector<int> bin;
int ed[90010],vis[90010];
void dijkstra(int x){
memset(vis,0,sizeof vis);
queue<int> q;
int e=0;
q.push(x);
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=1;
for(auto &v:G[u]){
if(!vis[v.first]){
bin.push_back(v.second);
ed[e]=v.first;
q.push(v.first);
e++;
}
}
}
}
void line_graph(int u){
hl.assign(m,0);
ll w=ask(hl);
ll no=w/a;
int l=0,r=m-1;
ll aux;
while(r-l>1){
int mid=(l+r)/2;
for(int i=0;i<m;i++){
if(i<mid) hl[i]=1;
else hl[i]=0;
}
aux=ask(hl);
if(aux==w) l=mid;
else r=mid;
}
answer(l,l+no);
}
void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B) {
n=N;
a=A;
b=B;
G.resize(N+1);
for(int i=0;i<U.size();i++){
int u=U[i],v=V[i];
G[u].push_back(ii(v,i));
G[v].push_back(ii(u,i));
}
bool sw=0;
int id=-1;
for(int i=0;i<N;i++){
if(G[i].size()>2) sw=1;
if(G[i].size()==1 and id==-1) id=i;
}
m=U.size();
if(sw==1){
dijkstra(0);
hl.assign(m,0);
/*for(int i=0;i<m;i++){
cout<<bin[i]<<" ";
}
cout<<endl;
for(int i=0;i<m;i++){
cout<<ed[i]<<" ";
}
cout<<endl;*/
int l=0,r=m-1,w=ask(hl);
while(r-l>1){
int mid=(l+r)/2;
for(int i=0;i<m;i++){
if(i<=mid) hl[bin[i]]=0;
else hl[bin[i]]=1;
}
if(ask(hl)==w) r=mid;
else l=mid;
/* for(int i=0;i<m;i++) cout<<hl[i]<<" ";
cout<<endl;*/
}
// cout<<r<<" "<<bin[r]<<" "<<ed[r]<<endl;
answer(0,ed[r]);
}
else{
line_graph(id);
}
}
Compilation message (stderr)
highway.cpp: In function 'void find_pair(int, std::vector<int>, std::vector<int>, int, int)':
highway.cpp:57:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
57 | for(int i=0;i<U.size();i++){
| ~^~~~~~~~~
# | 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... |