# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
671469 | user149 | Easter Eggs (info1cup17_eastereggs) | C++14 | 0 ms | 0 KiB |
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<bits/stdc++.h>
#include "grader.h"
using namespace std;
using pii=pair<int,int>;
int N;
vector<int> adjlist[555];
bool seen[555];
vector<int> preorder={-1};
void init(){
fill(seen,seen+555,0);
fill(adjlist,adjlist+555,{}};
preorder={-1};
}
void dfs(int node){
seen[node]=1;
preorder.push_back(node);
for(int child:adjlist[node]){
if(!seen[child]) dfs(child);
}
}
int bsearch(){
int lo=1;
int hi=N;
vector<int> query_vector; // always a prefix [1..i]
while(lo!=hi){
int mid=(lo+hi)/2;
while(query_vector[query_vector.size()-1]>lo) query_vector.pop_back();
for(int i=lo+1;i<=mid;i++){
query_vector.push_back(i);
}
if(query(query_vector)) hi=mid;
else lo=mid+1;
}
return lo;
}
int findEgg(int _N, vector<pii> edges){
N=_N;
init();
for(pii i:edges){
int a,b;
tie(a,b)=i;
adjlist[a].push_back(b);
adjlist[b].push_back(a);
}
dfs(1);
return bsearch();
}