# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
242999 | AndyIzGay | Easter Eggs (info1cup17_eastereggs) | C++14 | 0 ms | 0 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>
using namespace std;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;
vector<vi> AdjList;
vi qr;
vector<bool> num,ok;
int cur,cnt,n,tmp;
void dfs(int v, int p) {
if(tmp==cur) return;
if(ck[v]) cur++;
ans.push_back(v);
for(int u: AdjList[v]) {
if(u==p) continue;
else dfs(u,v)
}
}
int findEgg(int n, vii edges) {
AdjList.assign(n+1,vi());
num.assign(n+1,-1);
ck.assign(n+1,1);
cnt=n;
for(ii t: edges) {
AdjList[t.first].push_back(t.second);
AdjList[t.second].push_back(t.first);
}
while(cnt!=1) {
tmp=(cnt+1)/2;
cur=0;
qr.clear();
dfs(1,1);
if(query(qr)) {
for(int i=1 ; i<=n ; i++) num[i]=0;
for(int i: qr) num[i]=ck[i];
for(int i=1 ; i<=n ; i++) ck[i]=num[i];
cnt=tmp;
}
else {
for(int i: qr) {
ck[i]=0;
}
cnt-=tmp;
}
}
for(int i=1 ; i<=n ; i++) {
if(ck[i]) return i;
}
}