/*
We found Despacito 5 during contest (not clickbait)
*/
#include "grader.h"
#include <vector>
#include <set>
#include <cassert>
using namespace std;
#define cl(a,b) memset(a,b,sizeof(a))
#define all(x) x.begin(),x.end()
#define vec vector
#define vi vec<int>
#define pb push_back
#define f(x,y,z) for(int x=(y); x<(z); x++)
#define fd(x,y,z) for(int x=(y); x>=(z); x--)
#define fit(x,y) for(auto x: y)
#define pii pair<int,int>
#define ppi pair<pii,int>
#define f1 first
#define s2 second
#define spc ' '
#define endl '\n'
int findEgg(int N, vector < pair < int, int > > bridges);
int query(vector < int > islands);
int n;
vi e[16+7];
bool possible[16+7];
vi chosen;
int chosenCnt;
bool chosens[16+7];
int rem;
void dfs(int root, int parent){
chosen.pb(root);
if(possible[root])
chosenCnt++;
chosens[root]=1;
if(chosenCnt==rem/2){
return;
}
fit(child,e[root]){
if(child==parent) continue;
dfs(child,root);
if(chosenCnt==rem/2){
return;
}
}
}
int findEgg(int N, vector<pii>bridges){
n=N;
assert(n<=16);
for(int i=1; i<=n; i++)
possible[i]=1;
fit(x,bridges){
e[x.f1].pb(x.s2);
e[x.s2].pb(x.f1);
}
rem=n;
while(rem>1){
chosen.clear();
cl(chosens,0);
chosenCnt=0;
for(int i=1; i<=n; i++){
if(possible[i]){
//cerr<<i<<endl;
dfs(i,0);
break;
}
}
//cerr<<chosen.size()<<spc<<chosenCnt<<endl;
// cerr<<chosen.size()<<": ";
// f(i,0,chosen.size())
// cerr<<chosen[i]<<spc;
// cerr<<endl;
if(query(chosen)){
rem=chosenCnt;
for(int i=1; i<=n; i++)
if(possible[i] && chosens[i]==0)
possible[i]=0;
}
else{
rem-=chosen.size();
for(int i=0; i<chosen.size(); i++)
possible[chosen[i]]=0;
}
}
for(int i=1; i<=n; i++)
if(possible[i])
return i;
}
//int ___xxx;
//
//int query(vi _temp){
// fit(__x, _temp)
// if(__x==___xxx)
// return true;
// return false;
//}
//
//int main(){
// int _n;
// cin>>_n>>___xxx;
// vec<pii>_temp;
// for(int i=0; i<_n-1; i++){
// int a, b;
// cin>>a>>b;
// _temp.pb({a,b});
// }
// cout<<findEgg(_n,_temp)<<endl;
//}
Compilation message
eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:88:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0; i<chosen.size(); i++)
~^~~~~~~~~~~~~~
eastereggs.cpp:95:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
248 KB |
Number of queries: 4 |
2 |
Runtime error |
3 ms |
508 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
2 ms |
704 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
716 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |