Submission #973259

# Submission time Handle Problem Language Result Execution time Memory
973259 2024-05-01T16:52:03 Z vjudge1 Easter Eggs (info1cup17_eastereggs) C++17
100 / 100
12 ms 740 KB
#include <vector>
#include <utility>
#include "grader.h"

#define MAX_N 513
#define MAX_M (2*MAX_N)
int head[MAX_N], vv[MAX_M], nxt[MAX_M], eo,timer,tin[MAX_N],aux[MAX_N];
void link(int u,int v)
{
    int i=++eo;
    nxt[i]=head[u],vv[i]=v;
    head[u]=i;
}
void dfs(int u,int p)
{
    aux[tin[u]=timer++]=u;
    for(int j=head[u];j;j=nxt[j])if(p-vv[j])dfs(vv[j],u);
}

int findEgg(int n,std::vector<std::pair<int, int> >bridges)
{
    for(int i=1;i<=n;++i)head[i]=eo=timer=0;
    for(auto[u,v]:bridges)link(u,v),link(v,u);
    dfs(1,1);
    int lower=-1,upper=n-1;
    while(upper-lower>1)
    {
        int mid=lower+(upper-lower)/2;
        std::vector<int>q;
        for(int i=0;i<=mid;++i)q.push_back(aux[i]);
        if(q.size()&&query(q))upper=mid;
        else lower=mid;
    }
    return aux[upper];
}

/* int query(std::vector<int> islands) */

# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Number of queries: 4
2 Correct 1 ms 344 KB Number of queries: 4
3 Correct 0 ms 344 KB Number of queries: 4
4 Correct 1 ms 344 KB Number of queries: 4
# Verdict Execution time Memory Grader output
1 Correct 3 ms 480 KB Number of queries: 8
2 Correct 8 ms 724 KB Number of queries: 9
3 Correct 10 ms 720 KB Number of queries: 9
4 Correct 10 ms 740 KB Number of queries: 9
# Verdict Execution time Memory Grader output
1 Correct 11 ms 488 KB Number of queries: 9
2 Correct 12 ms 728 KB Number of queries: 9
3 Correct 10 ms 716 KB Number of queries: 9
4 Correct 10 ms 724 KB Number of queries: 9