# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
61483 | tranxuanbach | Easter Eggs (info1cup17_eastereggs) | C++17 | 51 ms | 2808 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#include"grader.h"
using namespace std;
#define fi first
#define se second
const int N = 1e5 + 5;
vector <int> adj[N], ans;
int n, num, cur, cnt;
bool ck[N], nw[N];
void dfs(int u, int p){
if (cur == num){
return;
}
if (ck[u]){
cur++;
}
ans.push_back(u);
for (int i = 0; i < adj[u].size(); i++){
int v = adj[u][i];
if (v == p){
continue;
}
dfs(v, u);
}
return;
}
int findEgg(int N, vector <pair <int, int> > bridges){
n = N;
for (int i = 1; i <= n; i++){
ck[i] = 1;
}
cnt = n;
for (int i = 1; i <= n; i++){
adj[i].clear();
}
for (int i = 0; i < n - 1; i++){
adj[bridges[i].fi].push_back(bridges[i].se);
adj[bridges[i].se].push_back(bridges[i].fi);
}
while (cnt != 1){
num = (cnt + 1) / 2;
cur = 0;
ans.clear();
dfs(1, 1);
if (query(ans)){
for (int i = 1; i <= n; i++){
nw[i] = 0;
}
for (int i = 0; i < ans.size(); i++){
nw[ans[i]] = ck[ans[i]];
}
for (int i = 1; i <= n; i++){
ck[i] = nw[i];
}
cnt = num;
}
else{
for (int i = 0; i < ans.size(); i++){
ck[ans[i]] = 0;
}
cnt -= num;
}
}
for (int i = 1; i <= n; i++){
if (ck[i]){
return i;
}
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |