Submission #1358913

#TimeUsernameProblemLanguageResultExecution timeMemory
1358913NValchanovEaster Eggs (info1cup17_eastereggs)C++20
87 / 100
6 ms492 KiB
#include <bits/stdc++.h>
#include "grader.h"

using namespace std;

const int MAXN = (1 << 9) + 10;

int n;
vector < int > adj[MAXN];
int ord[MAXN];
int timer;

void dfs(int u, int p)
{
    ord[++timer] = u;

    for(int& v : adj[u])
    {
        if(v == p)
            continue;

        dfs(v, u);
    }
}

int findEgg (int N, vector < pair < int, int > > edges)
{
    n = N;

    for(int i = 1; i <= n; i++)
    {
        adj[i].clear();
    }

    for(int i = 0; i < n - 1; i++)
    {
        adj[edges[i].first].push_back(edges[i].second);
        adj[edges[i].second].push_back(edges[i].first);
    }

    timer = 0;
    dfs(1, 1);

    int left = 1;
    int right = timer;
    int mid;
    int ans = -1;

    while(left <= right)
    {
        mid = left + (right - left) / 2;

        vector < int > p;

        for(int i = 1; i <= mid; i++)
        {
            p.push_back(ord[i]);
        }

        if(query(p))
        {
            right = mid - 1;
            ans = mid;
        }  
        else
        {
            left = mid + 1;
        }
    }

    return ord[ans];
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...