제출 #1304867

#제출 시각아이디문제언어결과실행 시간메모리
1304867kaloyanEaster Eggs (info1cup17_eastereggs)C++20
0 / 100
409 ms196608 KiB
#include <iostream>
#include <algorithm>
#include <vector>

const int MAXN = 512 + 1;

using namespace std;

int n;
std::vector<int> tree[MAXN];
std::vector<int> order;

void dfs(int node, int par)
{
    order.push_back(node);

    for(int to : tree[node])
    {
        if(to == par) continue;
        dfs(to, node);
    }
}

int query(vector<int> islands);

bool f(int idx)
{
    std::vector<int> prefix;

    for(int i = 0 ; i <= idx ; ++i)
    {
        prefix.push_back(order[i]);
    }

    return (bool)query(prefix);
}

int findEgg(int N, vector<pair<int,int>> bridges)
{
    n = N;
    for(auto &[a, b] : bridges)
    {
        tree[a].push_back(b);
        tree[b].push_back(a);
    }

    dfs(1, -1);

    int l = -1, r = n + 1;
    while(l + 1 < r)
    {
        int mid = (l + r) / 2;

        if(!f(mid)) l = mid;
        else r = mid;
    }

    return order[l + 1];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...