5091 2023. 04. 16 16:07:26 szil Multiplikátoros telebabrátor cpp14 Hibás válasz 0/100 328ms 123420 KiB
#include <bits/stdc++.h>

using ll = long long;
using namespace std;

const int MAXN = 100001;

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

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

    void add(int i, int n, int v) {
        if (i >= 0) {
            int bit = (n >> i) & 1;
            if (a[bit] == nullptr) {
                a[bit] = new Node();
            }
            a[bit]->add(i-1, n, v);
        } else {
            u = v;
        }
    }

    int qry(int i, int n) {
        if (u != -1) return u;
        int bit = (n >> i) & 1;
        if (a[!bit] != nullptr) {
            return a[!bit]->qry(i-1, n);
        } else {
            assert(a[bit] != nullptr);
            return a[bit]->qry(i-1, n);
        }
    }
};

Node *root;

void dfs(int u, int p = 0) {
    for (auto [v, w] : g[u]) {
        if (v != p) {
            d[v] = d[u] ^ w;
            root->add(31, d[v], 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++) {
        int ans = root->qry(31, d[i]);
        assert(ans != -1);
        cout << ans << " ";
    }
    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 4ms 6672 KiB
2 Elfogadva 8ms 9492 KiB
subtask2 0/20
3 Hibás válasz 8ms 9724 KiB
4 Elfogadva 8ms 9948 KiB
5 Hibás válasz 8ms 10172 KiB
6 Elfogadva 8ms 10304 KiB
7 Hibás válasz 8ms 10376 KiB
8 Hibás válasz 8ms 10492 KiB
9 Elfogadva 8ms 10704 KiB
10 Elfogadva 8ms 10924 KiB
11 Elfogadva 8ms 11284 KiB
12 Hibás válasz 8ms 11500 KiB
13 Elfogadva 8ms 11668 KiB
14 Hibás válasz 8ms 11560 KiB
15 Hibás válasz 8ms 11732 KiB
16 Hibás válasz 8ms 11732 KiB
subtask3 0/80
17 Hibás válasz 238ms 108048 KiB
18 Elfogadva 287ms 108044 KiB
19 Hibás válasz 279ms 108264 KiB
20 Elfogadva 233ms 108544 KiB
21 Elfogadva 238ms 108492 KiB
22 Hibás válasz 277ms 108476 KiB
23 Elfogadva 275ms 108504 KiB
24 Elfogadva 286ms 108692 KiB
25 Hibás válasz 237ms 108568 KiB
26 Hibás válasz 282ms 109180 KiB
27 Elfogadva 233ms 109196 KiB
28 Elfogadva 287ms 109060 KiB
29 Hibás válasz 328ms 108588 KiB
30 Hibás válasz 298ms 108612 KiB
31 Elfogadva 286ms 108920 KiB
32 Elfogadva 298ms 111728 KiB
33 Elfogadva 273ms 114696 KiB
34 Elfogadva 308ms 123420 KiB
35 Hibás válasz 264ms 109932 KiB
36 Elfogadva 268ms 109740 KiB
37 Elfogadva 257ms 109500 KiB
38 Elfogadva 216ms 109580 KiB
39 Hibás válasz 219ms 109272 KiB
40 Hibás válasz 218ms 108660 KiB