제출 #1338721

#제출 시각아이디문제언어결과실행 시간메모리
1338721husuuuEaster Eggs (info1cup17_eastereggs)C++20
100 / 100
8 ms516 KiB
#include <bits/stdc++.h>
#include "grader.h"
using namespace std;
#define pb push_back
#define ff first 
#define ss second
const int sz = 512 + 5 ;
vector<int>adj[sz] ;
vector<int>a ;
vector<bool>vis(sz) ; 
void dfs(int node) {
  a.push_back(node);
  vis[node] = 1 ;
  for(int i : adj[node]) {
    if(vis[i] == 0) {
      dfs(i) ;
    }
  }
}
/*
5
1 2
1 3
1 4
1 5
*/
int findEgg (int N, vector < pair < int, int > > bridges)
{
  int n = N ;
  for(int i = 1 ; i <= n ; i ++) {
    adj[i].clear() ;
    vis[i] = 0 ;
  }
  a.clear() ;
  for(int i = 0 ; i < bridges.size() ; i ++) {
    int u = bridges[i].ff ;
    int v = bridges[i].ss ;
    adj[u].pb(v) ;
    adj[v].pb(u) ;
  } 
  dfs(1) ;
  int l = 0 ;
  int r = a.size() - 2 ;
  int best = a.size()-1;
  while(l <= r) {
    int mid = (l + r) >> 1 ;
    vector<int>midl ;
    for(int i = 0 ; i <= mid ; i ++) {
      midl.pb(a[i]) ;
    }
    if(query(midl) == 1) {
      r = mid - 1 ;
      best = mid ;
    }
    else {
      l = mid + 1 ;
    }
  }
  return a[best] ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...