#include <bits/stdc++.h>
#include "grader.h"
using namespace std;
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,fma")
using ll = long long;
template<typename... T>
void see(T&... args) { ((cin >> args), ...);}
#define seea(a , x , y) for(int i = x; i < y; i++){cin >> a[i];}
#define sees(s , n) for(int i = 0;i < n; i++){int x; cin >> x; s.insert(x);}
#define seev(v , n) for(int i = 0;i < n; i++){int x; cin >> x; v.push_back(x);}
#define ub(a, x) upper_bound(all(a), x)
#define lb(a, x) lower_bound(all(a), x)
#define rall(x) x.rbegin(), x.rend()
#define all(x) x.begin(), x.end()
#define pii pair<int , int>
#define sz(x) (int)x.size()
#define pq priority_queue
#define vec vector
#define arr array
int n;
vec<vec<int>> g;
int findEgg (int N, vector < pair < int, int > > bridges)
{
n = N;
g.resize(n);
for (auto [x , y] : bridges){
x -- , y -- ;
g[x].push_back(y);
g[y].push_back(x);
}
vec<pii> pf;
vec<int> dep(n , 0);
auto dfs = [&](auto && dfs , int v , int p) -> void{
if (p != -1)
dep[v] = dep[p] + 1;
pf.emplace_back(dep[v] , v);
for (auto to : g[v]){
if (to != p){
dfs(dfs , to , v);
}
}
};
dfs(dfs , 0 , -1);
sort(all(pf));
pf.erase(unique(all(pf)) , pf.end());
vec<int> v;
for (auto [x , y] : pf)
v.push_back(y + 1);
int ans = n , l = 0 , r = n - 1;
while(l <= r){
int m = (l + r) >> 1;
vec<int> ch(v.begin() , v.begin() + m + 1);
if (query(ch))
r = m - 1 , ans = v[m];
else
l = m + 1;
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |