| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 759716 | jay_jayjay | Easter Eggs (info1cup17_eastereggs) | C++14 | 3089 ms | 336 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.
// {{{1
extern "C" int __lsan_is_turned_off() { return 1; }
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <string>
#include <iostream>
#include <deque>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define infl 0x3f3f3f3f3f3f3f3f
#ifdef DEBUG
#define dprintf(args...) fprintf(stderr,args)
#include <assert.h>
#endif
#ifndef DEBUG
#define dprintf(args...) 69
#define assert(args...) 42
#endif
// 1}}}
int query(vector<int> islands);
int findEgg(int n, vector<pair<int,int>> edges) {
for(auto&[a,b]:edges)a--,b--;
vector<vector<int>> adj(n);
for(auto [a,b]:edges) adj[a].push_back(b),adj[b].push_back(a);
set<int> vs;
for(int i=0;i<n;i++)vs.insert(i);
auto dfs = [&](auto& self, int u, int p) -> int {
if(!vs.count(u))return 0;
int sz=1;
for(auto x:adj[u])if(x!=p)sz+=self(self,x,u);
return sz;
};
auto doquery = [&](int u, int p) {
deque<int> dq;
dq.push_back(u);
vector<bool> vis(n);
vector<int> q;
while(dq.size()) {
int v=dq.front(); dq.pop_front();
if(vis[v])continue;
if(!vs.count(v))continue;
vis[v]=1;
q.push_back(1+v);
for(auto x:adj[v])if(x!=p)dq.push_back(x);
}
//for(auto j:q)printf("%d ",j);
int x=query(q);
//printf("%d\n",x);
for(auto&j:q)j--;
if(x) vs = set<int>{q.begin(),q.end()};
else for(auto jj:q)vs.erase(jj);
};
while(vs.size()&~1) {
//for(auto x:vs)printf("%d ",x);
//printf("\t\t%d\n\n\n",vs.size());
for (auto [u,v]: edges) {
//printf("try edge %d %d\n",u,v);
if(vs.count(u)&&vs.count(v)) {
// mayb?
int sz=dfs(dfs,u, v);
//printf("sz=%d\n",sz);
if(sz==vs.size()/2 || sz==vs.size()/2+1) {
//printf("q!\n");
doquery(u,v);
goto nxt;
}
}
}
assert(0);
nxt:;
}
return 1+*vs.begin();
}
#undef DEBUG
#ifdef DEBUG
int main()
{
}
#endif
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... | ||||
