#include "grader.h"
#include <bits/stdc++.h>
#define ll int
#define ld double
#define pb push_back
#define pf push_front
#define ins insert
#define fr first
#define sc second
#define endl "\n"
#define all(x) x.begin(), x.end()
using namespace std;
const ll M = 1e3 + 5;
vector<vector<ll>> d(M), g(M);
ll mx = 0;
void dfs(ll v, ll p, ll dd){
d[dd].pb(v);
mx = max(mx, dd);
for(auto i : g[v]){
if(i == p) continue;
dfs(i, v, dd + 1);
}
}
int findEgg (int n, vector <pair<int, int>> bridges){
ll i;
for(i=0;i<n - 1;i++){
auto [a, b] = bridges[i];
g[a].pb(b);
g[b].pb(a);
}
dfs(1, 0, 1);
ll l = 0, r = mx;
while(l + 1 < r){
ll m = (l + r) / 2;
vector<ll> q;
for(i=1;i<=m;i++){
for(auto j : d[i]) q.pb(j);
}
if(query(q)) r = m;
else l = m;
}
ll x = r;
l = 0, r = d[x].size();
while(l + 1 < r){
ll m = (l + r) / 2;
vector<ll> q;
for(i=1;i<x;i++){
for(auto j : d[i]) q.pb(j);
}
for(i=0;i<m;i++) q.pb(d[x][i]);
if(query(q)) r = m;
else l = m;
}
return d[x][r - 1];
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |