제출 #1351742

#제출 시각아이디문제언어결과실행 시간메모리
1351742Jawad_Akbar_JJ기지국 (IOI20_stations)C++17
100 / 100
291 ms592 KiB
#include <iostream>
#include <vector>

using namespace std;
vector<int> nei[1005], num;
int cur;

void dfs(int u, int p = -1, int h = 1){
	if (h & 1)
		num[u] = cur++;
	for (int i : nei[u])
		if (i != p)
			dfs(i, u, h+1);
	if (!(h & 1))
		num[u] = cur++;
}

vector<int> label(int n, int k, vector<int> u, vector<int> v){
	for (int i=0;i<n - 1;i++){
		nei[u[i]].push_back(v[i]);
		nei[v[i]].push_back(u[i]);
	}

	num.resize(n, 0), cur = 0;
	dfs(0);

	for (int i=0;i<n;i++)
		nei[i].clear();

	return num;
}

int find_next_station(int s, int t, vector<int> c){
	if (s == 0){
		for (int i : c)
			if (t <= i)
				return i;
	}
	if (s < c[0]){
		if (t < s or t >= c.back())
			return c.back();
		for (int i : c)
			if (t <= i)
				return i;
	}
	if (c.size() == 1 or t < c[1] or t > s)
		return c[0];
	for (int i=c.size() - 1; i >= 0;i--)
		if (t >= c[i])
			return c[i];
	return 0;
}
#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...