5093 2023. 04. 16 16:23:39 szil Multiplikátoros telebabrátor cpp14 Hibás válasz 0/100 358ms 125212 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 = 29; 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 = 29; 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 11320 KiB
2 Elfogadva 10ms 14336 KiB
subtask2 0/20
3 Hibás válasz 9ms 14480 KiB
4 Elfogadva 10ms 14432 KiB
5 Hibás válasz 10ms 14428 KiB
6 Elfogadva 9ms 14688 KiB
7 Hibás válasz 10ms 14884 KiB
8 Hibás válasz 9ms 15112 KiB
9 Elfogadva 9ms 15216 KiB
10 Elfogadva 9ms 15168 KiB
11 Elfogadva 9ms 15184 KiB
12 Hibás válasz 9ms 15456 KiB
13 Elfogadva 9ms 15600 KiB
14 Hibás válasz 9ms 15656 KiB
15 Hibás válasz 9ms 15620 KiB
16 Hibás válasz 9ms 15592 KiB
subtask3 0/80
17 Hibás válasz 254ms 111960 KiB
18 Elfogadva 312ms 112464 KiB
19 Hibás válasz 330ms 112412 KiB
20 Elfogadva 314ms 112636 KiB
21 Elfogadva 319ms 112624 KiB
22 Hibás válasz 261ms 112612 KiB
23 Elfogadva 259ms 112648 KiB
24 Elfogadva 256ms 112896 KiB
25 Hibás válasz 317ms 113036 KiB
26 Hibás válasz 298ms 113476 KiB
27 Elfogadva 275ms 113268 KiB
28 Elfogadva 358ms 113256 KiB
29 Hibás válasz 314ms 112788 KiB
30 Hibás válasz 270ms 112924 KiB
31 Elfogadva 316ms 113320 KiB
32 Elfogadva 263ms 115612 KiB
33 Elfogadva 263ms 118088 KiB
34 Elfogadva 263ms 125212 KiB
35 Hibás válasz 298ms 114484 KiB
36 Elfogadva 239ms 114304 KiB
37 Elfogadva 238ms 114052 KiB
38 Elfogadva 291ms 113920 KiB
39 Hibás válasz 237ms 113772 KiB
40 Hibás válasz 231ms 113180 KiB