제출 #128612

#제출 시각아이디문제언어결과실행 시간메모리
128612E869120Easter Eggs (info1cup17_eastereggs)C++14
100 / 100
21 ms760 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include "grader.h"
using namespace std;

vector<int> X[1 << 12], G;
bool used[1 << 12]; int N;

void dfs(int pos) {
	used[pos] = true; G.push_back(pos);
	for (int i = 0; i < X[pos].size(); i++) {
		if (used[X[pos][i]] == false) dfs(X[pos][i]);
	}
}

int solve(int cr) {
	cr = min(cr, N);
	vector<int>vec;
	for (int i = 0; i < cr; i++) vec.push_back(G[i]);
	return query(vec);
}

int findEgg(int NN, vector<pair<int, int>> bridges) {
	N = NN;
	for (int i = 0; i < bridges.size(); i++) {
		X[bridges[i].first].push_back(bridges[i].second);
		X[bridges[i].second].push_back(bridges[i].first);
	}
	dfs(1);

	int cx = 0, P = 8;
	if (NN <= 16) P = 3;
	for (int i = P; i >= 0; i--) {
		int v = solve(cx + (1 << i));
		if (v == 0) cx += (1 << i);
	}
	return G[cx];
}

컴파일 시 표준 에러 (stderr) 메시지

eastereggs.cpp: In function 'void dfs(int)':
eastereggs.cpp:12:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < X[pos].size(); i++) {
                  ~~^~~~~~~~~~~~~~~
eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:26:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < bridges.size(); i++) {
                  ~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...