#include <bits/stdc++.h>
#include "grader.h"
using namespace std;
const int maxn=600;
vector<int>v[maxn],euler;
bool used[maxn];
void dfs(int node)
{
used[node]=true;
for(int i : v[node])
{
if(!used[i])
{
euler.push_back(i);
dfs(i);
if(euler.back()!=i)euler.push_back(i);
}
}
}
int findEgg(int N, vector < pair < int, int > > bridges)
{
memset(used,false,sizeof(used));
for(int i=1;i<=512;i++)v[i].clear();
euler.clear();
for(pair<int,int>p : bridges)
{
v[p.first].push_back(p.second);
v[p.second].push_back(p.first);
}
for(int i=1;i<=N;i++)
{
if(!used[i])
{
euler.push_back(i);
dfs(i);
}
}
///bin search
int l=0,r=euler.size()-1,mid,curr;
while(l<=r)
{
mid=(l+r)/2;
vector<int>ask;
for(int i=l;i<=mid;i++)ask.push_back(i);
curr=query(ask);
if(curr==1)
l=mid-1;
else r=mid+1;
}
return l;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |