Submission #756735

#TimeUsernameProblemLanguageResultExecution timeMemory
756735andrei_marciucEaster Eggs (info1cup17_eastereggs)C++14
100 / 100
24 ms472 KiB
#include <bits/stdc++.h>
#include "grader.h"
#define MAX 512
using namespace std;

vector<int> adj[ MAX + 10 ];
vector<int> nodes;

void dfs( int node, int parent ) {
    nodes.push_back( node );
    for( auto next : adj[ node ] )
        if( next != parent )
            dfs( next, node );
}

int check( int pos ) {
    vector<int> nodesQuery;
    for( int i = 0; i < pos; i++ )
        nodesQuery.push_back( nodes[ i ] );
    return query( nodesQuery );
}

int findEgg( int N, vector<pair<int, int>> bridges ) {
    for( int i = 1; i <= N; i++ ) 
        adj[ i ].clear();

    nodes.clear();
    for( auto it : bridges ) {
        adj[ it.first ].push_back( it.second );
        adj[ it.second ].push_back( it.first );
    }

    dfs( 1, -1 );
    int left = 0;
    int right = nodes.size();
    while( left + 1 < right ) {
        int med = ( left + right ) / 2;
        if( check( med ) == 1 )
            right = med;
        else left = med;
    }

    return nodes[ right - 1 ];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...