Submission #1048771

#TimeUsernameProblemLanguageResultExecution timeMemory
1048771WhisperEaster Eggs (info1cup17_eastereggs)C++17
0 / 100
1 ms600 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; using ll = long long; //#define int long long #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define FORD(i, a, b) for (int i = (b); i >= (a); i --) #define REP(i, a) for (int i = 0; i < (a); ++i) #define REPD(i, a) for (int i = (a) - 1; i >= 0; --i) #define MASK(i) (1LL << (i)) #define BIT(x, i) (((x) >> (i)) & 1) constexpr ll LINF = (1ll << 60); constexpr int INF = (1ll << 30); constexpr int Mod = 1e9 + 7; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); /* Phu Trong from Nguyen Tat Thanh High School for gifted student */ template <class X, class Y> bool minimize(X &x, const Y &y){ X eps = 1e-9; if (x > y + eps) {x = y; return 1;} return 0; } template <class X, class Y> bool maximize(X &x, const Y &y){ X eps = 1e-9; if (x + eps < y) {x = y; return 1;} return 0; } int findEgg(int N, vector<pair<int, int>> bridges){ vector<vector<int>> G(N + 5); for (pair<int, int>&x : bridges){ int u = x.first, v = x.second; G[u].emplace_back(v); G[v].emplace_back(u); } vector<int> minDist(N + 5), rev(N + 5); queue<int> q; q.emplace(1); minDist[1] = 1; int cnt = 1; while(q.size()){ int u = q.front(); q.pop(); for (int &v : G[u]){ if (!minDist[v]){ q.emplace(v); minDist[v] = ++cnt; rev[minDist[v]] = v; } } } int l = 1, r = N; auto check = [&](int x) -> bool{ vector<int> node; for (int i = 1; i <= N; ++i) if(minDist[i] <= x){ node.emplace_back(x); } return query(node); }; int ans = 0; while (l <= r){ int m = (l + r) >> 1; if(check(m)) ans = m, r = m - 1; else l = m + 1; } return rev[ans]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...