제출 #750734

#제출 시각아이디문제언어결과실행 시간메모리
750734Error42기지국 (IOI20_stations)C++17
100 / 100
942 ms920 KiB
#include "stations.h"

#include <algorithm>
#include <vector>

using namespace std;

int dfs(
	vector<vector<int>> const& graph,
	vector<int>& label,
	int const cur,
	int start,
	bool const left,
	int const par
) {
	int sz = 1;

	if (left) {
		label[cur] = start;
		start++;
	}

	for (int const neigh : graph[cur]) {
		if (neigh == par)
			continue;

		int const neigh_sz = dfs(graph, label, neigh, start, !left, cur);

		sz += neigh_sz;
		start += neigh_sz;
	}

	if (!left)
		label[cur] = start;
	
	return sz;
}

vector<int> label(int const n, int const k, vector<int> const u, vector<int> const v) {
	vector<vector<int>> graph(n);

	for (int i = 0; i < n - 1; i++) {
		graph[u[i]].push_back(v[i]);
		graph[v[i]].push_back(u[i]);
	}

	vector<int> label(n, -1);

	dfs(graph, label, 0, 0, true, -1);

	return label;
}

int find_next_station(int const s, int const t, vector<int> c) {
	bool const left = s < c[0];

	if (left) {
		if (t < s)
			return c.back();

		for (int i = 0; i < c.size() - 1; i++)
			if (c[i] >= t)
				return c[i];
		
		return c.back();
	}
	else {
		reverse(c.begin(), c.end());

		if (t > s)
			return c.back();

		for (int i = 0; i < c.size() - 1; i++)
			if (c[i] <= t)
				return c[i];

		return c.back();
	}
}

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

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:61:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |   for (int i = 0; i < c.size() - 1; i++)
      |                   ~~^~~~~~~~~~~~~~
stations.cpp:73:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |   for (int i = 0; i < c.size() - 1; i++)
      |                   ~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...