Submission #1336197

#TimeUsernameProblemLanguageResultExecution timeMemory
1336197moonbaekEaster Eggs (info1cup17_eastereggs)C++20
0 / 100
2 ms520 KiB
#include <bits/stdc++.h>
using namespace std;

int query(vector<int> islands);

int findEgg(int N, vector<pair<int,int>> bridges){

    vector<vector<int>> adj(N+1);
    for(auto [u,v] : bridges){
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    vector<int> tin(N+1), tout(N+1), euler;
    euler.reserve(N);

    function<void(int,int)> dfs = [&](int u,int p){
        tin[u] = euler.size();
        euler.push_back(u);

        for(int v:adj[u])
            if(v!=p)
                dfs(v,u);

        tout[u] = euler.size()-1;
    };

    dfs(1,0);

    int l = 0, r = N-1;

    while(l < r){

        int mid = (l+r)/2;

        vector<int> ask;

        for(int i=l;i<=mid;i++)
            ask.push_back(euler[i]);

        if(query(ask))
            r = mid;
        else
            l = mid+1;
    }

    return euler[l];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...