Submission #115953

#TimeUsernameProblemLanguageResultExecution timeMemory
115953nhimnam120Easter Eggs (info1cup17_eastereggs)C++14
0 / 100
3095 ms384 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; vector<int> ask; vector<int> adj[1001]; bool used[1001],wrong[1001]; long long size=0; long long cnt; 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(); for(int i=0;i<=1000;i++){ adj[i].clear(); } memset(used,0,sizeof(used)); memset(wrong,0,sizeof(wrong)); size=N; for(auto i: bridges){ long long left=i.first; long long right=i.second; adj[left].push_back(right); adj[right].push_back(left); } while(true){ ask.clear(); if(size==1){ for(int i=1;i<=N;i++){ if(used[i]==0&&wrong==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...