Submission #1321564

#TimeUsernameProblemLanguageResultExecution timeMemory
1321564Zone_zoneeEaster Eggs (info1cup17_eastereggs)C++17
0 / 100
1 ms456 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; int findEgg (int N, vector<pair<int, int>> bridges) { vector<int> adj[600]; for(auto [u, v] : bridges){ adj[u].push_back(v); adj[v].push_back(u); } vector<int> Q; bitset<600> can; can.set(); int sz = N; auto bfs = [&](int x){ // cerr << "TEST\n"; bitset<600> vis; queue<int> q; q.push(x); vis[x] = 1; while(!q.empty()){ int u = q.front(); q.pop(); Q.push_back(u); if(Q.size() == sz) break; for(int v : adj[u]){ if(vis[v] || !can[v]) continue; vis[v] = 1; q.push(v); } } }; while(sz > 1){ // cerr << sz << ' '; for(int i = 1; i <= N; ++i){ if(can[i]){ bfs(i); break; } } // cerr << "DBG : "; // cerr << sz << '\n'; // for(auto i : Q) cerr << i << ' '; // cerr << '\n'; if(Q.empty()) break; if(query(Q)){ can.reset(); for(int x : Q) can[x] = 1; // cerr << "TRUE\n"; }else{ for(int x : Q) can[x] = 0; // cerr << "FALSE\n"; } sz = (sz+1)/2; if(sz == 1) break; Q.clear(); } if(Q.size() == 2 && can[Q.front()]){ if(query({Q.front()})) return Q.front(); else return Q.back(); }else if(!Q.empty() && can[Q.front()]){ return Q.front(); } // cerr << "Ans list : "; // for(int x : Q) cerr << x << ' '; // for(int i = 1; i <= N; ++i){ // if(can[i] == 1) cerr << i << ' '; // } // cerr << '\n'; for(int i = 1; i <= N; ++i){ if(can[i]) return i; } return -1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...