6742 2023. 12. 18 15:34:19 111 Utazási iroda cpp17 Elfogadva 45/45 59ms 25056 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define double long double

#define pii pair<int, int>

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
#ifdef CB
	freopen("be2.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
#endif
	int N, K;
	cin >> N >> K;
	vector<vector<int>> g(N + 1);
	for (int i = 0; i < N - 1; i++) {
		int a, b;
		cin >> a >> b;
		g[a].push_back(b);
		g[b].push_back(a);
	}
	K--;
	int s = 1 + K / N;
	K %= N;
	vector<int> d(N + 1, 1);
	auto dfs1 = [&](auto dfs1, int i, int j) -> void {
		for (int k : g[j]) {
			if (k != i) {
				dfs1(dfs1, j, k);
				d[j] += d[k];
			}
		}
	};
	dfs1(dfs1, s, s);
	vector<int> ans;
	auto dfs2 = [&](auto dfs2, int i, int j) -> void {
		ans.push_back(j);
		sort(g[j].begin(), g[j].end());
		for (int k : g[j]) {
			if (k != i) {
				if (K <= d[k]) {
					if (K > 0) {
						K--;
						dfs2(dfs2, j, k);
					}
				}
				else {
					K -= d[k];
				}
			}
		}
	};
	dfs2(dfs2, s, s);
	for (int i : ans) {
		cout << i << ' ';
	}
	cout << '\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 45/45
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 8ms 3480 KiB
3 Elfogadva 2/2 3ms 2240 KiB
4 Elfogadva 2/2 3ms 2460 KiB
5 Elfogadva 1/1 3ms 2808 KiB
6 Elfogadva 2/2 4ms 3260 KiB
7 Elfogadva 2/2 3ms 3484 KiB
8 Elfogadva 1/1 4ms 3948 KiB
9 Elfogadva 2/2 56ms 23468 KiB
10 Elfogadva 2/2 57ms 24040 KiB
11 Elfogadva 1/1 59ms 25056 KiB
12 Elfogadva 2/2 50ms 17156 KiB
13 Elfogadva 2/2 43ms 18196 KiB
14 Elfogadva 2/2 50ms 17352 KiB
15 Elfogadva 2/2 50ms 17348 KiB
16 Elfogadva 2/2 46ms 18272 KiB
17 Elfogadva 3/3 50ms 17364 KiB
18 Elfogadva 2/2 50ms 17664 KiB
19 Elfogadva 2/2 46ms 17632 KiB
20 Elfogadva 2/2 48ms 18704 KiB
21 Elfogadva 3/3 48ms 17680 KiB
22 Elfogadva 3/3 48ms 18020 KiB
23 Elfogadva 3/3 52ms 18496 KiB
24 Elfogadva 1/1 48ms 18692 KiB
25 Elfogadva 1/1 52ms 19832 KiB