#include <bits/stdc++.h>
#include "grader.h"
using namespace std;
const int N = 2000005;
vector<int> vec[N], ans;
int fix[N];
vector<int> ask(int r) {
return vector<int>(ans.begin(), ans.begin() + r + 1);
}
void dfs(int node, int par) {
if (fix[node]) return;
fix[node] = 1;
ans.push_back(node);
for (int to : vec[node]) {
if (to != par) {
dfs(to, node);
}
}
}
int findEgg(int N, vector<pair<int, int>> bridges) {
ans.clear();
for (int i = 0; i <= N; ++i) {
vec[i].clear();
fix[i] = 0;
}
for (auto [u, v] : bridges) {
vec[u].push_back(v);
vec[v].push_back(u);
}
dfs(1, 0);
int l = 0, r = ans.size() - 1, pas = 0;
while (l <= r) {
int mid = (l + r) / 2;
vector<int> que = ask(mid);
int egg = query(que);
if (egg == 1) {
pas = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
return pas;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |