제출 #1146769

#제출 시각아이디문제언어결과실행 시간메모리
1146769Bilal_CoderEaster Eggs (info1cup17_eastereggs)C++20
0 / 100
1088 ms196608 KiB
#include <bits/stdc++.h>
#include "grader.h"


using namespace std;

#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,fma")

using ll = long long;

template<typename... T>
void see(T&... args) { ((cin >> args), ...);}
#define seea(a , x , y) for(int i = x; i < y; i++){cin >> a[i];}
#define sees(s , n) for(int i = 0;i < n; i++){int x; cin >> x; s.insert(x);}
#define seev(v , n) for(int i = 0;i < n; i++){int x; cin >> x; v.push_back(x);}
#define ub(a, x) upper_bound(all(a), x)
#define lb(a, x) lower_bound(all(a), x)
#define rall(x) x.rbegin(), x.rend()
#define all(x) x.begin(), x.end()
#define pii pair<int , int>
#define sz(x) (int)x.size()
#define pq priority_queue
#define vec vector
#define arr array

int n;

vec<vec<int>> g;

int findEgg (int N, vector < pair < int, int > > bridges)
{
    n = N;
    g.resize(n);
    for (auto [x , y] : bridges){
        x -- , y -- ;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    vec<pii> pf;
    vec<int> dep(n , 0);
    auto dfs = [&](auto && dfs , int v , int p) -> void{
        if (p != -1)
            dep[v] = dep[p] + 1;
        pf.emplace_back(dep[v] , v);
        for (auto to : g[v]){
            if (to != p){
                dfs(dfs , to , v);
            }
        }
    };
    dfs(dfs , 0 , -1);
    sort(all(pf));
    pf.erase(unique(all(pf)) , pf.end());
    vec<int> v;
    for (auto [x , y] : pf)
        v.push_back(y + 1);
    int ans = n , l = 0 , r = n - 1;
    while(l <= r){
        int m = (l + r) >> 1;
        vec<int> ch(v.begin() , v.begin() + m + 1);
        if (query(ch))
            r = m - 1 , ans = v[m];
        else 
            l = m + 1;
    }
    return ans;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...