Submission #1146438

#TimeUsernameProblemLanguageResultExecution timeMemory
1146438ReLiceEaster Eggs (info1cup17_eastereggs)C++20
71.60 / 100
10 ms544 KiB
#include "grader.h"
#include <bits/stdc++.h>
#define ll int
#define ld double
#define pb push_back
#define pf push_front
#define ins insert
#define fr first
#define sc second
#define endl "\n"
#define all(x) x.begin(), x.end()

using namespace std;

int findEgg (int n, vector <pair<int, int>> bridges){
    ll i;
    
	vector<vector<ll>> d(n + 1), g(n + 1);
	ll mx = 0;
    
    for(i=0;i<n - 1;i++){
		auto [a, b] = bridges[i];
		g[a].pb(b);
		g[b].pb(a);
	}
	
	
	function<void(ll, ll, ll)> dfs = [&](ll v, ll p, ll dd){
		d[dd].pb(v);
		mx = max(mx, dd);
		
		for(auto i : g[v]){
			if(i == p) continue;
			dfs(i, v, dd + 1);
		}
		
		return;
	};
	
	dfs(1, 0, 1);
	
	ll l = 0, r = mx;
	
	while(l + 1 < r){
		ll m = (l + r) / 2;
		
		vector<ll> q;
		
		for(i=1;i<=m;i++){
			for(auto j : d[i]) q.pb(j);
		}
		
		if(query(q)) r = m;
		else l = m;
	}
	ll x = r;
	l = 0, r = d[x].size();
	
	while(l + 1 < r){
		ll m = (l + r) / 2;
		
		vector<ll> q;
		
		for(i=1;i<x;i++){
			for(auto j : d[i]) q.pb(j);
		}
		
		for(i=0;i<m;i++) q.pb(d[x][i]);
		
		if(query(q)) r = m;
		else l = m;
	}
	
	return d[x][r - 1];
}











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