#include <bits/stdc++.h>
using namespace std;
const int mxN = 513;
vector<int>G[mxN], Euler;
void dfs(int node, int par){
Euler.push_back(node);
for(int &v : G[node]){
if(v != par){
dfs(v, node);
}
}
}
int query(vector<int>q);//{
// cout << "? ";
// for(int i : q){
// cout << i << " ";
// }
// cout << endl;
// int a;
// cin >> a;
// return a;
// }
int findEgg(int n, vector<pair<int, int>>bridges){
for(int i = 0;i < (int)bridges.size();++i){
int u = bridges[i].first, v = bridges[i].second;
G[u].push_back(v);
G[v].push_back(u);
}
dfs(1, 1);
int l = 0, r = Euler.size() - 1;
while(l < r){
int mid = (l + r) / 2;
vector<int>q;
for(int i = 0;i <= mid;++i){
q.push_back(Euler[i]);
}
if(query(q)){
r = mid;
}
else{
l = mid + 1;
}
}
int res = Euler[r];
Euler.clear();
for(int i = 1;i <= n;++i){
G[i].clear();
}
return res;
}
// int main(){
// ios_base::sync_with_stdio(0);
// cin.tie(0);
// int n;
// cin >> n;
// vector<pair<int, int>>b;
// for(int i = 0;i < n - 1;++i){
// int u, v;
// cin >> u >> v;
// b.push_back({u, v});
// }
// cout << findEgg(n, b);
// }
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |