#include "grader.h"
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
#include <deque>
#include <numeric>
#include <stack>
#include <chrono>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
void fast_io() {
// freopen("", "r", stdin);
// freopen("", "w", stdout);
// ios::sync_with_stdio(0);
// cin.tie();
// cout.tie();
cout << setprecision(9);
}
// #define int long long
// #define endl '\n'
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define fi first
#define se second
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
// int X;
//
// bool query(vector<int> &a){
// for (auto i : a) if (i == X) return 1;
// return 0;
// }
const int N = 513;
int t, val[N];
vector<int> adj[N];
void dfs(int u = 1, int par = 1){
val[++t] = u;
for (auto v : adj[u]){
if (v == par) continue;
dfs(v, u);
}
}
int findEgg(int n, vector<pair<int, int>> bridges){
for (auto [u, v] : bridges){
adj[u].push_back(v);
adj[v].push_back(u);
}
dfs();
int l = 0, r = n;
while (r - l > 1){
int mid = (l + r) / 2;
vector<int> Q;
for (int i = 1; i <= mid; i++) Q.push_back(val[i]);
bool x = query(Q);
if (x) r = mid;
else l = mid;
}
return val[r];
}
// void solve() {
//
// }
//
// signed main() {
// fast_io();
// srand(chrono::steady_clock::now().time_since_epoch().count());
// X = 5;
// cout << findEgg(8, {{1,2}, {1,3}, {2, 4}, {2, 5}, {3, 6}, {3, 7}, {6, 8}}) << endl;
// return 0;
// }
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |