#include <cstring>
#include <vector>
using namespace std;
typedef long long ll;
#define endl '\n'
const int maxv = 512;
vector<int> edges[maxv];
vector<int> in;
bool visited[maxv];
int timer = 0;
int query(vector<int> islands);
bool check(int mid) {
vector<int> nv(mid + 1);
for (int i = 0; i <= mid; i++)
nv[i] = in[i];
return query(nv);
}
int bin_search() {
int l = 0, r = in.size() - 1;
int mid;
vector<int> curr = in;
while (l <= r) {
mid = (l + r) / 2;
if (check(mid)) {
r = mid;
} else
l = mid + 1;
}
return mid;
}
void dfs(int start) {
in.push_back(start);
visited[start] = true;
for (int next : edges[start])
if (!visited[next])
dfs(next);
}
void clear() {
for (int i = 0; i < maxv; i++)
edges[i].clear();
memset(visited, false, sizeof(visited));
timer = 0;
}
int findEgg(int n, vector<pair<int, int>> bridges) {
clear();
for (auto &[u, v] : bridges)
edges[u].push_back(v);
return bin_search();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |