提出 #34360606


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N;
    cin >> N;
    vector<vector<int>> graph(N);
    for (int i = 0; i < N - 1; ++i) {
        int a, b;
        cin >> a >> b;
        a -= 1;
        b -= 1;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    int Q;
    cin >> Q;
    vector<vector<pair<int, int>>> query(N);
    for (int i = 0; i < Q; ++i) {
        int u, k;
        cin >> u >> k;
        u -= 1;
        query[u].emplace_back(i, k);
    }
    auto get_farthest = [&](int src) {
        vector<int> dist(N, N);
        queue<int> que;
        auto push = [&](int u, int d) {
            if (dist[u] > d) {
                dist[u] = d;
                que.push(u);
            }
        };
        push(src, 0);
        while (!que.empty()) {
            int u = que.front();
            que.pop();
            for (int v : graph[u]) {
                push(v, dist[u] + 1);
            }
        }
        return max_element(dist.begin(), dist.end()) - dist.begin();
    };
    int L = get_farthest(0);
    int R = get_farthest(L);
    vector<int> ans(Q, -1);
    for (int root : {L, R}) {
        vector<int> path;
        auto dfs = [&](auto&& dfs, int u, int p) -> void {
            for (const auto& [q, k] : query[u]) {
                if (k <= (int)path.size()) {
                    ans[q] = path[(int)path.size() - k] + 1;
                }
            }
            path.push_back(u);
            for (int v : graph[u]) {
                if (v != p) {
                    dfs(dfs, v, u);
                }
            }
            path.pop_back();
        };
        dfs(dfs, root, -1);
    }
    for (int x : ans) {
        cout << x << '\n';
    }
    return 0;
}

提出情報

提出日時
問題 F - Exactly K Steps
ユーザ KoD
言語 C++ (GCC 9.2.1)
得点 500
コード長 1804 Byte
結果 AC
実行時間 321 ms
メモリ 38016 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 2
AC × 22
セット名 テストケース
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt
ケース名 結果 実行時間 メモリ
example_00.txt AC 8 ms 3564 KiB
example_01.txt AC 2 ms 3428 KiB
test_00.txt AC 247 ms 38016 KiB
test_01.txt AC 7 ms 3428 KiB
test_02.txt AC 311 ms 29524 KiB
test_03.txt AC 282 ms 25652 KiB
test_04.txt AC 266 ms 25656 KiB
test_05.txt AC 321 ms 35120 KiB
test_06.txt AC 286 ms 23984 KiB
test_07.txt AC 260 ms 25608 KiB
test_08.txt AC 83 ms 7144 KiB
test_09.txt AC 85 ms 7008 KiB
test_10.txt AC 80 ms 7008 KiB
test_11.txt AC 84 ms 13436 KiB
test_12.txt AC 83 ms 11492 KiB
test_13.txt AC 76 ms 12428 KiB
test_14.txt AC 314 ms 31388 KiB
test_15.txt AC 302 ms 23648 KiB
test_16.txt AC 263 ms 25148 KiB
test_17.txt AC 256 ms 25368 KiB
test_18.txt AC 225 ms 19384 KiB
test_19.txt AC 215 ms 19880 KiB