Submission #1113903

#TimeUsernameProblemLanguageResultExecution timeMemory
1113903julia_08Easter Eggs (info1cup17_eastereggs)C++17
100 / 100
18 ms592 KiB
#include <bits/stdc++.h>
#include "grader.h"

using namespace std;

const int MAXN = 600;

vector<int> adj[MAXN];

int pre[MAXN];

int t = 0;

void dfs(int v, int p){
  pre[v] = ++ t;

  for(auto u : adj[v]) if(u != p) dfs(u, v);
}

bool ask(int k, int n){

  vector<int> islands;

  for(int i=1; i<=n; i++){
    if(pre[i] <= k){
      islands.push_back(i);
    }
  }

  return query(islands);
}

int bs(int n){

  int l = 1, r = n;

  while(l < r){

    int m = l + (r - l) / 2;

    if(ask(m, n)) r = m;
    else l = m + 1;

  }

  return r;
}

int findEgg(int n, vector<pair<int, int>> bridges){

  t = 0;

  for(int i=1; i<=n; i++) adj[i].clear();

  for(auto [a, b] : bridges){
    adj[a].push_back(b);
    adj[b].push_back(a);
  }

  dfs(1, 1);

  int x = bs(n);

  for(int i=1; i<=n; i++){
    if(pre[i] == x){
      return i;
    }
  }

}

Compilation message (stderr)

eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:70:1: warning: control reaches end of non-void function [-Wreturn-type]
   70 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...