#include <bits/stdc++.h>
#include "grader.h"
//#include "grader.cpp"
using namespace std;
#define ll long long
#define N 6005
#define pb push_back
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
int a[N], t, answer, vis[N], lvl[N], m, par[N], l, r, jog = 1;
vector <int> f[N], p;
set <int> s;
void find(int x) {
if(s.find(x) != s.end()) return;
s.insert(x);
find(par[x]);
}
void solve(int x) {
vis[x] = 1;
for(auto i : f[x]) {
if(vis[i]) continue;
par[i] = x;
solve(i);
}
}
int findEgg (int n, vector < pair < int, int > > bridges)
{
for(int i=1;i<=n;i++) {
f[i].clear();
}
for(int i=1;i<=n;i++) {
par[i] = i;
vis[i] = 0;
}
for(auto i : bridges) {
f[i.ff].pb(i.ss);
f[i.ss].pb(i.ff);
}
solve(1);
l = 1;
r = n;
while(l <= r) {
int md = (l + r) / 2;
p.clear();
s.clear();
for(int i = l; i <= md; i++) {
find(i);
}
for(auto i : s) {
p.pb(i);
}
bool tr = 0;
if((int)p.size() > 0) tr = query(p);
if(tr) {
if(query({md})) return md;
r = md - 1;
}
else {
if(query({md})) return md;
l = md + 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... |