# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
484560 | 2021-11-04T12:00:43 Z | MohamedFaresNebili | Easter Eggs (info1cup17_eastereggs) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> /// #pragma GCC optimize ("Ofast") /// #pragma GCC target ("avx2") using namespace std; using ll = long long; using vi = vector<int>; #define pb push_back #define ff first #define ss second #define lb lower_bound #define all(x) (x).begin() , (x).end() #include "grader.h" vector<int>adj[555], id; void dfs(int v, int p) { id.pb(v); for(auto u: adj[v]) { if(u == p) continue; dfs(u, v); } } int findEgg (int N, vector < pair < int, int > > bridges) { for(int l = 1; l <= N; l++) adj[l].clear(); id.clear(); for(auto u : bridges) { int a = u.ff, b = u.ss; adj[a].pb(b); adj[b].pb(a); } dfs(1, 1); int lo = 0, hi = N - 1; while(lo <= hi) { int md = (lo + hi)/2; if(query(vector<int>(id.begin() + lo, id.begin() + mid))) hi = md - 1; else lo = md; } return id[lo]; }