#include <bits/stdc++.h>
#define NNN 100005
#define ll long long int
#define fo(i,x,y) for(int i=x;i<=y;i++)
#define fs(ar,n) fo(i,1,n) cin>>ar[i]
#define sp " "
#define fast cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(false)
#define pb push_back
#define ppb pop_back
#define fi first
#define se second
#define ii pair<int,int>
#define lli pair<ll,ll>
#include "grader.h"
using namespace std;
ll n,m,ar[NNN],sum,t,mark[NNN];
int query (vector < int > h)
{
cntQ ++;
int ap[1009];
if (h.empty ()) return 0;
for (int i=1; i<=N; i++)
ap[i] = 0;
for (auto it = h.begin (); it != h.end (); it ++)
ap[*it] = 1;
queue < int > cc;
cc.push (h[0]), ap[h[0]] = 2;
while (!cc.empty ())
{
int nod = cc.front ();
cc.pop ();
for (auto it = v[nod].begin (); it != v[nod].end (); it ++)
if (ap[*it] == 1)
ap[*it] = 2, cc.push (*it);
}
for (int i=1; i<=N; i++)
if (ap[i] == 1) return -1;
for (auto it = h.begin (); it != h.end (); it ++)
if (*it == X) return 1;
return 0;
}
queue<int> q;
bool check(int x)
{
vector<int> bos;
fo(i,1,x)
bos.pb(ar[i]);
return query(bos);
}
int bs()
{
int l=1,r=n;
while(l<r)
{
if(l==r-1)
{
if(check(l))
r=l;
break;
}
int mid=(l+r)/2;
if(check(mid))
r=mid;
else
l=mid+1;
}
return r;
}
int findEgg (int NN, vector < pair < int, int > > bridges)
{
n=NN;
q.push(1);
ll cnt=0;
fo(i,0,n-2)
{
ll a=bridges[i].fi;
ll b=bridges[i].se;
vv[a].pb(b);
vv[b].pb(a);
}
while(q.size())
{
ll x=q.front();
q.pop();
if(mark[x])
continue;
mark[x]=++cnt;
ar[cnt]=x;
for(int i=0;i<vv[x].size();i++)
{
ll y=v[x][i];
if(mark[y])
continue;
q.push(y);
}
}
// fo(i,1,n)
// cout<<ar[i]<<sp;
// cout<<endl;
// bs();
return bs();
}
// int main ()
// {
// // freopen ("input", "r", stdin);
// //freopen ("output", "w", stdout);
// scanf ("%d", &N);
// // int Queries;
// vector < pair < int, int > > param;
// for (int i=1; i<N; i++)
// {
// int x, y;
// scanf ("%d %d", &x, &y);
// v[x].push_back (y);
// v[y].push_back (x);
// param.push_back ({x, y});
// }
// // scanf ("%d", &Queries);
// // while (Queries --)
// // {
// // scanf ("%d", &X), cntQ = 0;
// int Y = findEgg (N, param);
// // if (X != Y)
// // {
// // printf ("WA %d instead of %d\n", Y, X);
// // return 0;
// // }
// // printf ("OK %d\n", cntQ);
// // }
// // return 0;
// }
Compilation message
eastereggs.cpp: In function 'int query(std::vector<int>)':
eastereggs.cpp:20:5: error: 'cntQ' was not declared in this scope
20 | cntQ ++;
| ^~~~
eastereggs.cpp:23:22: error: 'N' was not declared in this scope
23 | for (int i=1; i<=N; i++)
| ^
eastereggs.cpp:33:24: error: 'v' was not declared in this scope
33 | for (auto it = v[nod].begin (); it != v[nod].end (); it ++)
| ^
eastereggs.cpp:37:22: error: 'N' was not declared in this scope
37 | for (int i=1; i<=N; i++)
| ^
eastereggs.cpp:40:20: error: 'X' was not declared in this scope
40 | if (*it == X) return 1;
| ^
eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:84:3: error: 'vv' was not declared in this scope
84 | vv[a].pb(b);
| ^~
eastereggs.cpp:96:17: error: 'vv' was not declared in this scope
96 | for(int i=0;i<vv[x].size();i++)
| ^~
eastereggs.cpp:98:9: error: 'v' was not declared in this scope
98 | ll y=v[x][i];
| ^