Submission #115958

#TimeUsernameProblemLanguageResultExecution timeMemory
115958nhimnam120Easter Eggs (info1cup17_eastereggs)C++14
100 / 100
23 ms396 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; vector<int> ask; vector<int> adj[1005]; bool used[1005]; bool wrong[1005]; long long size=0; long long cnt=0; void dfs(long long node, long long par){ if(cnt==size/2) return; if(used[node]==0) { cnt++; } ask.push_back(node); for(auto i : adj[node]){ if(wrong[i]!=0||i==par) continue; dfs(i,node); } } int findEgg (int N, vector < pair < int, int > > bridges) { ask.clear(); memset(used,0,sizeof(used)); memset(wrong,0,sizeof(wrong)); for(int i=1;i<=N;i++){ adj[i].clear(); } size=N; for(auto i:bridges){ adj[i.first].push_back(i.second); adj[i.second].push_back(i.first); } while(true){ ask.clear(); if(size==1){ for(int i=1;i<=N;i++){ if(used[i]==0&&wrong[i]==0){ return i; } } } else{ cnt=0; dfs(1,1); if(query(ask)==1){ size=cnt; bool vs[1001]; memset(vs,0,sizeof(vs)); for(auto i:ask){ vs[i]=1; } for(int i=1;i<=N;i++){ if(vs[i]==0){ wrong[i]=true; } } } else{ size=size-cnt; for(auto i:ask){ used[i]=true; } } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...