5092 2023. 04. 16 16:21:30 szil Multiplikátoros telebabrátor cpp14 Hibás válasz 0/100 331ms 125032 KiB
#include <bits/stdc++.h>

using ll = long long;
using namespace std;

const int MAXN = 200001;

vector<pair<int, int>> g[MAXN];
int d[MAXN];

struct Node {
    Node *a[2];
    int u = -1;

    Node() {
        a[0] = a[1] = nullptr;
    }
};

Node *root;

void add(int u) {
    Node *cur = root;
    for (int i = 30; i >= 0; i--) {
        int x = (d[u] >> i) & 1;
        if (cur->a[x] == nullptr) cur->a[x] = new Node();
        cur = cur->a[x];
    }
    cur->u = u;
}

void dfs(int u, int p = 0) {
    for (auto [v, w] : g[u]) {
        if (v != p) {
            d[v] = d[u] ^ w;
            add(v);
            dfs(v, u);
        }
    }
}

void solve() {
    root = new Node();
    int n; cin >> n;
    for (int i = 0; i < n - 1; i++) {
        int a, b, w; cin >> a >> b >> w;
        g[a].push_back({b, w});
        g[b].push_back({a, w});
    }
    dfs(1);
    for (int i = 1; i <= n; i++) {
        Node *cur = root;
        for (int j = 30; j >= 0; j--) {
            int x = (d[i] >> j) & 1;
            if (cur->a[!x] != nullptr) cur = cur->a[!x];
            else cur = cur->a[x];
        }
        cout << cur->u << " ";
    }
    cout << "\n";
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    solve();
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 7ms 11188 KiB
2 Elfogadva 9ms 14144 KiB
subtask2 0/20
3 Hibás válasz 9ms 14364 KiB
4 Elfogadva 10ms 14564 KiB
5 Hibás válasz 10ms 14776 KiB
6 Elfogadva 10ms 15096 KiB
7 Hibás válasz 9ms 15308 KiB
8 Hibás válasz 9ms 15524 KiB
9 Elfogadva 9ms 15728 KiB
10 Elfogadva 9ms 15584 KiB
11 Elfogadva 10ms 15904 KiB
12 Hibás válasz 9ms 15960 KiB
13 Elfogadva 9ms 16152 KiB
14 Hibás válasz 9ms 15908 KiB
15 Hibás válasz 9ms 15904 KiB
16 Hibás válasz 8ms 15884 KiB
subtask3 0/80
17 Hibás válasz 254ms 112264 KiB
18 Elfogadva 254ms 112236 KiB
19 Hibás válasz 254ms 112264 KiB
20 Elfogadva 254ms 112288 KiB
21 Elfogadva 256ms 112268 KiB
22 Hibás válasz 254ms 112560 KiB
23 Elfogadva 256ms 112504 KiB
24 Elfogadva 254ms 112476 KiB
25 Hibás válasz 256ms 112372 KiB
26 Hibás válasz 252ms 112684 KiB
27 Elfogadva 257ms 112716 KiB
28 Elfogadva 252ms 112636 KiB
29 Hibás válasz 261ms 112280 KiB
30 Hibás válasz 259ms 112344 KiB
31 Elfogadva 319ms 112896 KiB
32 Elfogadva 317ms 115436 KiB
33 Elfogadva 324ms 117920 KiB
34 Elfogadva 330ms 125032 KiB
35 Hibás válasz 250ms 114288 KiB
36 Elfogadva 244ms 114096 KiB
37 Elfogadva 243ms 113832 KiB
38 Elfogadva 331ms 113924 KiB
39 Hibás válasz 331ms 113724 KiB
40 Hibás válasz 237ms 113132 KiB