제출 #1136729

#제출 시각아이디문제언어결과실행 시간메모리
1136729vjudge2기지국 (IOI20_stations)C++20
0 / 100
299 ms572 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;

void dfs(int u, int p, int dep, vector<vector<int>>& adj, vector<int>& labels, int& lab) {
	if (dep % 2 == 0) labels[u] = ++lab; 
	for (int v : adj[u]) {
		if (v == p) continue;
		dfs(v, u, dep + 1, adj, labels, lab);
	}
	if (dep % 2 == 1) labels[u] = ++lab;
}

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	vector<vector<int>> adj;
	vector<int> labels;
	int lab = 0;
	adj.resize(n);
	labels.resize(n);
	for (int i = 0; i < n - 1; i++) {
		adj[u[i]].push_back(v[i]);
		adj[v[i]].push_back(u[i]);
	}
	dfs(0, -1, 0, adj, labels, lab);
	return labels;
}

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