Submission #522191

#TimeUsernameProblemLanguageResultExecution timeMemory
522191blueEaster Eggs (info1cup17_eastereggs)C++17
100 / 100
23 ms636 KiB
#include <vector>
#include <cassert>
#include "grader.h"
using namespace std;

using vi = vector<int>;
using pii = pair<int, int>;

const int mx = 512;

vi edge[1+mx];


vi ord(1, 0);

vi vis(1+mx, 0);

void dfs(int u, int p)
{
    vis[u] = 1;
    ord.push_back(u);
    for(int v : edge[u])
    {
        if(!vis[v]) 
            dfs(v, u);
    }
}


int findEgg (int N, vector < pair < int, int > > bridges)
{
    for(pii b: bridges)
    {
        edge[b.first].push_back(b.second);
        edge[b.second].push_back(b.first);
    }

    dfs(1, 1);

    assert(int(bridges.size()) == N-1);
    // assert(int(ord.size()) == N);

    int lo = 1, hi = N;
    while(lo != hi)
    {
        int mid = (lo+hi)/2;

        vi qr;
        for(int i = 1; i <= mid; i++)
            qr.push_back(ord[i]);

        if(query(qr))
            hi = mid;
        else
            lo = mid+1;
    }

    return ord[lo];

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...