Submission #1306781

#TimeUsernameProblemLanguageResultExecution timeMemory
1306781kunzaZa183Easter Eggs (info1cup17_eastereggs)C++20
100 / 100
10 ms512 KiB
#include "grader.h"
#include <bits/stdc++.h>

using namespace std;

int findEgg(int N, vector<pair<int, int>> bridges) {
  vector<vector<int>> adj(N);
  for (auto [a, b] : bridges) {
    a--, b--;
    adj[a].push_back(b), adj[b].push_back(a);
  }

  vector<int> dep(N);
  function<void(int, int, int)> fvii = [&](int cur, int par, int dpi) {
    dep[cur] = dpi;
    for (auto a : adj[cur])
      if (a != par)
        fvii(a, cur, dpi + 1);
  };
  fvii(0, 0, 0);

  vector<int> all(N);
  iota(all.begin(), all.end(), 0);
  sort(all.begin(), all.end(), [&](int a, int b) { return dep[a] < dep[b]; });

  int l = 0, r = N - 1;
  while (l < r) {
    // return 0;
    // cout << l << " " << r << "\n";
    int mid = (l + r) / 2;
    vector<int> qry;
    for (int i = 0; i <= mid; i++) {
      qry.push_back(all[i] + 1);
    }

    // cout << x << "\n";
    if (query(qry)) {
      r = mid;
    } else {
      l = mid + 1;
    }
  }

  return all[l] + 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...