# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
525622 | tudor | Easter Eggs (info1cup17_eastereggs) | C++17 | 20 ms | 356 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
#include "grader.h"
using namespace std;
const int nmax = 512;
int n;
vector < pair < int, int > > bridges;
vector < int > g[nmax + 1];
vector < int > ord;
vector < int > q;
void dfs ( int node, int parent ) {
ord.push_back ( node );
for ( int i = 0; i < g[node].size (); i++ )
if ( g[node][i] != parent )
dfs ( g[node][i], node );
}
/**
int query ( vector < int > islands ) {
int r;
cin >> r;
return r;
} **/
int findEgg ( int n, vector < pair < int, int > > bridges ) {
ord.clear ();
for ( int i = 1; i <= n; i++ )
g[i].clear ();
for ( int i = 0; i < n - 1; i++ ) {
g[bridges[i].first].push_back ( bridges[i].second );
g[bridges[i].second].push_back ( bridges[i].first );
}
dfs ( 1, 0 );
int st = 0, dr = n - 2, mij, poz = n - 1;
while ( st <= dr ) {
int mij = st + ( dr - st ) / 2;
q.clear ();
for ( int i = 0; i <= mij; i++ )
q.push_back ( ord[i] );
if ( query ( q ) == 1 )
dr = mij - 1, poz = mij;
else
st = mij + 1;
}
return ord[poz];
}
/*
int main() {
cin >> n;
bridges.resize ( n );
for ( int i = 0; i < n - 1; i++ )
cin >> bridges[i].first >> bridges[i].second;
cout << findEgg ( n, bridges );
return 0;
} */
컴파일 시 표준 에러 (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... |