| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1347905 | jeno836 | Easter Eggs (info1cup17_eastereggs) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "grader.h"
using namespace std;
vector<int> adj[520];
int tour[520],node[520],id;
void dfs(int u){
tour[u] = ++id
node[id]=u;
for( auto &v : adj[u]) if(!tour[v]) dfs(v);
}
bool ask(int m){
vector <int> v;
for(int i=1;i<=m;++i) v.emplace_back(node[i]);
return query(v);
}
int findEgg(int N,vector< pair<int,int> > bridges){
for(int i=1;i<=N;i++) adj[i].clear();
for(auto &[u,v]:bridges ) adj[u].emplace_back(v), adj[v].emplace_back(u);
id=0;
dfs(1);
int l=1,r=N;
while(l<r){
int m = (l+r)>>1;
if(ask(m)) r=m;
else l=m+1;
}
return node(l);
}