# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
874280 | asli_bg | Easter Eggs (info1cup17_eastereggs) | C++11 | 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;
//int query(vector < int > islands);
int findEgg (int N, vector < pair < int, int > > bridges)
{
if(N==2){
if(query(bridges[0].fi)){
return bridges[0].fi;
}
else return bridges[0].se;
}
set<int> s;
set<int> bridge_ind;
vector<int> islands;
//vector<int> adjlist[550];
/*for(auto el:bridges){
adjlist[el.fi].pb(el.se);
adjlist[el.se].pb(el.fi);
}*/
//int j=1;
//while(s.size()<N/2){
for(int i=0;i<bridges.size() and s.size()<N/2;i++){
int sz=s.size();
s.insert(bridges[i].fi);
s.insert(bridges[i].se);
bridge_ind.insert(i);
if(sz!=0 and s.size()-sz==2){
s.erase(bridges[i].fi);
s.erase(bridges[i].se);
bridge_ind.erase(i);
}
}
//}
for(auto el:s){
islands.push_back(el);
}
vector<pair<int,int>> new_bridge;
if(query(islands)){
for(auto el:bridge_ind){
new_bridge.push_back(bridges[el]);
}
findEgg(islands.size(),new_bridge);
}
else{
for(int i=1;i<=N;i++){
if(!bridge_int.count(i)){
new_bridge.push_back(bridges[i]);
}
}
findEgg(N-islands.size(),new_bridge);
}
//if (query ({1})) return 1;
//return N;
}