Submission #670848

#TimeUsernameProblemLanguageResultExecution timeMemory
670848thiago_bastosEaster Eggs (info1cup17_eastereggs)C++17
100 / 100
20 ms360 KiB
#include <bits/stdc++.h>
#include "grader.h"

using namespace std;

#define INF 1000000000
#define INFLL 1000000000000000000ll
#define EPS 1e-9
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define fi first
#define sc second

using i64 = long long;
using u64 = unsigned long long;
using ld = long double;
using ii = pair<int, int>;

const int MAXN = 522;

vector<int> adj[MAXN];
int walk[MAXN], t;

void dfs(int u, int p) {
	walk[t++] = u;
	for(int v : adj[u]) {
		if(v == p) continue;
		dfs(v, u);
	}
}

int findEgg (int N, vector < pair < int, int > > bridges) {
    t = 0;

	for(int i = 0; i < N; ++i) adj[i].clear();

	for(auto [u, v] : bridges) {
		--u, --v;
		adj[u].pb(v);
		adj[v].pb(u);
	}

	dfs(0, 0);

	int l = 0, r = N - 1;

	while(l < r) {
		int m = (l + r) / 2;
		vector<int> h;
		for(int i = 0; i <= m; ++i) h.pb(walk[i] + 1);
		if(query(h)) r = m;
		else l = m + 1;
	}

	return walk[r] + 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...