/*
___ ___ ___ ___ ___ ___ ___ _____ ___ ___ ___
/ /\ /__/\ / /\ /__/\ / /\ /__/\ / /\ / /::\ / /\ / /\ / /\
/ /::\ | |::\ / /::\ \ \:\ / /::\ | |::\ / /::\ / /:/\:\ / /::\ / /::\ / /::\
/ /:/\:\ | |:|:\ / /:/\:\ \__\:\ / /:/\:\ | |:|:\ / /:/\:\ / /:/ \:\ / /:/\:\ / /:/\:\ / /:/\:\
/ /:/ \:\ __|__|:|\:\ / /:/ \:\ ___ / /::\ / /:/~/::\ __|__|:|\:\ / /:/~/::\ /__/:/ \__\:| / /:/ \:\ / /:/ \:\ / /:/ \:\
/__/:/ \__\:\ /__/::::| \:\ /__/:/ \__\:\ /__/\ /:/\:\ /__/:/ /:/\:\ /__/::::| \:\ /__/:/ /:/\:\ \ \:\ / /:/ /__/:/ \__\:\ /__/:/ \__\:\ /__/:/ \__\:\
\ \:\ / /:/ \ \:\~~\__\/ \ \:\ / /:/ \ \:\/:/__\/ \ \:\/:/__\/ \ \:\~~\__\/ \ \:\/:/__\/ \ \:\ /:/ \ \:\ / /:/ \ \:\ / /:/ \ \:\ / /:/
\ \:\ /:/ \ \:\ \ \:\ /:/ \ \::/ \ \::/ \ \:\ \ \::/ \ \:\/:/ \ \:\ /:/ \ \:\ /:/ \ \:\ /:/
\ \:\/:/ \ \:\ \ \:\/:/ \ \:\ \ \:\ \ \:\ \ \:\ \ \::/ \ \:\/:/ \ \:\/:/ \ \:\/:/
\ \::/ \ \:\ \ \::/ \ \:\ \ \:\ \ \:\ \ \:\ \__\/ \ \::/ \ \::/ \ \::/
\__\/ \__\/ \__\/ \__\/ \__\/ \__\/ \__\/ \__\/ \__\/ \__\/
*/
#include <bits/stdc++.h>
//#include "grader.h"
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
#define ll long long
#define pb push_back
#define endl '\n'
#define pii pair<ll,ll >
#define F first
#define S second
#define ld long double
using namespace std;
//using namespace __gnu_pbds;
//typedef tree<ll , null_type , less_equal<ll> ,rb_tree_tag ,tree_order_statistics_node_update >ordered_set;
const int MOD=1e9+7;
const int N=3e5+7;
long long po(ll x,ll y)
{
ll ans=1;
while(y){
if(y & 1) ans=(ans*x);//%MOD;
y/=2;
x=(x*x);//%MOD;
}
return ans;
}
vector<ll>v[N];
vector<ll>eul;
void dfs(ll x,ll p)
{
eul.pb(x);
for(ll i=0;i<v[x].size();i++){
if(v[x][i]!=p){
dfs(v[x][i],x);
eul.pb(x);
}
}
}
bool query(vector<int>x)
{
for(ll i=0;i<x.size();i++) if(x[i]==3) return 1;
return 0;
}
int findEgg(int n, vector < pair < int, int > > edj)
{
for(ll i=0;i<edj.size();i++){
v[edj[i].F].pb(edj[i].S);
v[edj[i].S].pb(edj[i].F);
}
dfs(1,1);
set<int>s;
vector<int>que;
ll l=0,r=eul.size()-1,mid;
while(l<r){
mid=(l+r)/2;
for(ll i=0;i<=mid;i++) s.insert(eul[i]);
for(set<int>::iterator it=s.begin();it!=s.end();it++){
que.pb(*it);
}
if(query(que)) r=mid;
else l=mid+1;
s.clear();
que.clear();
}
return eul[l];
}
void solve()
{
vector<pair<int,int> >edj;
edj.pb({1,2});
edj.pb({1,3});
edj.pb({2,4});
edj.pb({2,5});
edj.pb({4,8});
edj.pb({4,9});
edj.pb({4,10});
edj.pb({3,6});
edj.pb({3,7});
cout<<findEgg(10,edj);
}
/*
int main()
{
// ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
//freopen(".in","r",stdin);freopen("timeline.out","w",stdout);
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
*/
Compilation message
eastereggs.cpp: In function 'void dfs(long long int, long long int)':
eastereggs.cpp:53:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
53 | for(ll i=0;i<v[x].size();i++){
| ~^~~~~~~~~~~~
eastereggs.cpp: In function 'bool query(std::vector<int>)':
eastereggs.cpp:63:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
63 | for(ll i=0;i<x.size();i++) if(x[i]==3) return 1;
| ~^~~~~~~~~
eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:69:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
69 | for(ll i=0;i<edj.size();i++){
| ~^~~~~~~~~~~
/usr/bin/ld: /tmp/cc573TDP.o: in function `query(std::vector<int, std::allocator<int> >)':
grader.cpp:(.text+0x0): multiple definition of `query(std::vector<int, std::allocator<int> >)'; /tmp/ccoRLkaP.o:eastereggs.cpp:(.text+0x260): first defined here
collect2: error: ld returned 1 exit status