#include <bits/stdc++.h>
#include "grader.h"
using namespace std;
// #define int long long
//#define pb push_back
//#define fs first
//#define sc second
//#define rep(i,a,b) for(int i=a; i<=b; i++)
const int N=540;
// int query(vector<int> que){
// for(auto x:que){
// cout<<x<<" ";
// }
// cout<<endl;
// int egg;cin>>egg;
// return egg;
// }
int fix[N];
vector<int> vec[N],ans,junk;
vector<int> ask(int r ){
vector<int> some;
for(int i=0; i<=r; i++){
some.push_back(ans[i]);
}
return some;
}
void dfs(int node , int par ){
fix[node]=1;
ans.push_back(node);
for(auto to :vec[node]){
if(to==par){
continue;
}
dfs(to,node);
}
}
/// 1 2 3 7 8 10 11 6 5 4 9
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(int i=0; i<bridges.size(); i++){
int u=bridges[i].first;
int v=bridges[i].second;
vec[u].push_back(v);
vec[v].push_back(u);
}
dfs(1,0);
int l=0;
int pas=0;
int r=ans.size()-1;
while(l<=r){
int mid=(l+r)/2;
vector<int> que;
que=ask(mid);
int egg=query(que);
if(egg==1){
r=mid-1;
pas=mid;
}
else{
l=mid+1;
}
}
return ans[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... |