# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
141349 | Ruxandra985 | 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 <cstdio>
#include <vector>
using namespace std;
int poz;
void euler (int nod ,int tata, vector <pair <int,int> > v , vector <int> &eul ){
int x,y;
eul.push_back(nod);
for (int i = 0 ; i < v.size() ; i++){
x = v[i].first;
y = v[i].second;
if (x == nod && y!=tata){
euler (y,nod,v,eul);
eul.push_back(nod);
}
else if (y == nod && x != tata){
euler (x,nod,v,eul);
eul.push_back(nod);
}
}
}
int findEgg (int n , vector <pair <int,int> > v){
int st,dr,mid,sol;
vector <int> eul,islands;
euler(1,0,v,eul); /// eul e un vector cu parc euler , dim 2*n
st = 0;
dr = 2*n-2;
while (st<dr){
mid = (st + dr)/2;
/// iei de la st la mid
islands.clear();
for (int i=st;i<=mid;i++)
islands.push_back(eul[i]);
sol = query(islands);
if (sol == 0)
st = mid + 1;
else dr = mid;
}
return eul[st];
}