답안 #922054

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
922054 2024-02-04T22:50:29 Z Ianis Easter Eggs (info1cup17_eastereggs) C++17
81 / 100
28 ms 1296 KB
#include <bits/stdc++.h>
#include "grader.h"

using namespace std;

using pii = pair<int, int>;

bool my_query(const set<int> &s) {
   if (s.empty()) return 0;
   vector<int> v;
   for (auto &it : s)
      v.push_back(it);
   return query(v);
}

int findEgg(int n, vector<pii> bridges) {
   vector<vector<int>> g(n + 1);
   vector<bool> vis(n + 1);
   vector<int> euler;

   for (auto [ x, y ] : bridges) {
      g[x].push_back(y);
      g[y].push_back(x);
   }

   function<void(int)> dfs = [&](int x) {
      vis[x] = true;
      euler.push_back(x);
      for (auto u : g[x]) {
         if (!vis[u]) {
            dfs(u);
            euler.push_back(x);
         }
      }
   };

   dfs(1);

   function<bool(int)> check = [&](int mid) {
      set<int> s;
      for (int i = 0; i < mid; i++)
         s.insert(euler[i]);
      return my_query(s);
   };

   int mask = 0;

   for (int i = log2(euler.size()); i >= 0; i--) {
      mask |= 1 << i;
      if (mask >= int(euler.size()) - 1 || check(mask)) mask ^= 1 << i;
   }

   return euler[mask];
}
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 432 KB Number of queries: 5
2 Partially correct 1 ms 344 KB Number of queries: 5
3 Partially correct 1 ms 344 KB Number of queries: 5
4 Partially correct 1 ms 344 KB Number of queries: 5
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 732 KB Number of queries: 9
2 Partially correct 17 ms 760 KB Number of queries: 10
3 Partially correct 26 ms 1000 KB Number of queries: 10
4 Partially correct 24 ms 752 KB Number of queries: 10
# 결과 실행 시간 메모리 Grader output
1 Partially correct 28 ms 1296 KB Number of queries: 10
2 Partially correct 23 ms 512 KB Number of queries: 10
3 Partially correct 24 ms 756 KB Number of queries: 10
4 Partially correct 28 ms 504 KB Number of queries: 10