| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1220547 | lukasuliashvili | Easter Eggs (info1cup17_eastereggs) | C++20 | 0 ms | 0 KiB | 
#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=1e6*2+5;
// 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)
{
    for(int i=0; i<bridges.size(); i++){
        int u=bridges[i].fs;
        int v=bridges[i].sc;
        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;
            pas=mid;
        }
        else{
            l=mid+1;
        }
    }
    return pas;
}
