제출 #1139587

#제출 시각아이디문제언어결과실행 시간메모리
1139587KasymKEaster Eggs (info1cup17_eastereggs)C++20
0 / 100
1 ms472 KiB
#include "bits/stdc++.h"
#include "grader.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(), v.end()
#define ll long long
#define pb push_back
#define pii pair<int, int>
#define pli pair<ll, int>
#define pll pair<ll, ll>
#define tr(i, c) for(auto i = c.begin(); i != c.end(); ++i)
#define wr puts("----------------")
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
const int N = 550;
vector<int> adj[N];
int A[N], id;
// int select=4;

void dfs(int x, int pr=-1){
	A[++id]=x;
	tr(it, adj[x])
	if(*it!=pr)
		dfs(*it, x);
}

// int query(vector<int> v){
// 	bool fnd=0;
// 	tr(it, v)
// 	if(*it==select){
// 		fnd=1;
// 		break;
// 	}
// 	return fnd;
// }

int findEgg(int n, vector<pii> v){
	tr(it, v)
	adj[it->ff].pb(it->ss), adj[it->ss].pb(it->ff);	
	dfs(1);
	int l=1, r=n, answer=-1;
	vector<int> ask;
	while(l<=r){
		int m=(l+r)>>1;
		for(int i = 1; i <= m; ++i)
			ask.pb(A[i]);
		if(query(ask))
			r=m-1, answer=m;
		else
			l=m+1;
		ask.clear();
	}
	assert(~answer);
	return A[answer];
}

// int main(){
// 	int n=5;
// 	vector<pii> v;
// 	v.pb({1, 2}), v.pb({1, 3}), v.pb({2, 4}), v.pb({4, 5});
// 	int mine=findEgg(5, v);
// 	// wr;
// 	// printf("%d\n", mine);
// 	if(select==A[mine])
// 		puts("Yay.");
// 	else
// 		puts("Never mind.");
// 	return 0;
// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...