Submission #1220227

#TimeUsernameProblemLanguageResultExecution timeMemory
1220227giorgi123glmEaster Eggs (info1cup17_eastereggs)C++20
0 / 100
0 ms504 KiB
#include <bits/stdc++.h>
#include "grader.h"

using namespace std;

int findEgg (int N, vector < pair < int, int > > input)
{
    vector <vector <int> > gr (N + 1);
    for (auto [a, b] : input) {
        gr[b].emplace_back (a);
        gr[a].emplace_back (b);
    }

    int timer = 0;
    vector <int> in (N + 1);
    vector <int> out (N + 1);
    vector <int> revin (N + 1);

    function <void(int,int)> dfs =
    [&](int p, int par)->void {
        in[p] = out[p] = ++timer;
        revin[in[p]] = p;

        for (int& e : gr[p])
            if (e != par)
                dfs (e, p);
        
        out[p] = timer;
    };
    dfs (1, -1);

    auto ask = [&](int L, int R) {
        vector <int> toask;
        for (int i = L; i <= R; i++)
            toask.emplace_back (revin[i]);
        return query (toask);
    };

    int L = 1, R = timer;
    while (L < R) {
        int mid = (L + R) / 2;
        if (ask (L, mid) >= 1)
            R = mid;
        else
            L = mid + 1;
    }

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