제출 #1321548

#제출 시각아이디문제언어결과실행 시간메모리
1321548Zone_zoneeEaster Eggs (info1cup17_eastereggs)C++20
26.40 / 100
6 ms456 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; int findEgg (int N, vector<pair<int, int>> bridges) { vector<int> adj[N+1]; 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){ 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){ 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(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"; } Q.clear(); sz /= 2; } // cerr << "Ans list : "; // 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] && query({i})) return i; } return -1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...