Submission #660274

#TimeUsernameProblemLanguageResultExecution timeMemory
660274a_aguiloEaster Eggs (info1cup17_eastereggs)C++14
100 / 100
22 ms588 KiB
#include <bits/stdc++.h>
#include "grader.h"

using namespace std;

vector<int> order;
vector<vector<int>> listaAdy;

void dfs(int nodo, int padre){
    order.push_back(nodo);
    for(int vecino: listaAdy[nodo]){
        if(vecino == padre) continue;
        dfs(vecino, nodo);
    }
}

int findEgg (int N, vector < pair < int, int > > bridges)
{
    listaAdy = vector<vector<int>>(N+1);
    for(pair<int, int> bridge: bridges){
        listaAdy[bridge.second].push_back(bridge.first);
        listaAdy[bridge.first].push_back(bridge.second);
    }
    dfs(1, -1);
    int ans = N;
    int lo = 1; int hi = N-1;
    while(hi >= lo){
        int mid = lo + (hi - lo)/2;
        vector<int> ask(mid);
        for(int i = 0; i < mid; ++i) ask[i] = order[i];
        if(query(ask)){
            hi = mid-1;
            ans = mid;
        }
        else{
            lo = mid+1;
        }
    }
    return order[ans-1];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...