# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1173176 | nguyenkhangninh99 | Easter Eggs (info1cup17_eastereggs) | C++17 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
int tin[maxn], f[maxn], timeDfs;
vector<int> g[maxn];
void dfs(int u, int pre){
tin[u] = ++timeDfs;
f[timeDfs] = u;
for(int v: g[u]){
if(v == pre) dfs(v, u);
}
}
bool ok(int mid){
vector<int> v;
for(int i = 1; i <= mid; i++) v.push_back(f[i]);
return query(v);
}
int findEgg(int N, vector <pair<int, int>> bridges){
int n = N;
for(int i = 0; i < n - 1; i++){
int u = bridge[i].first, v = bridge[i].second;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1, 0);
int l = 1, r = n, ans = -1;
while(l <= r){
int mid = (l + r) / 2;
if(ok(mid)){
ans = mid;
r = mid - 1;
}
else l = mid + 1;
}
cout << f[ans];
}