13062022-04-18 16:58:56Valaki2Multiplikátoros telebabrátorcpp14Elfogadva 100/100246ms111320 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second

const int maxn = 1e5;
const int bits = 30;

int n;
vector<pair<int, int> > g[maxn + 1];
int dist[maxn + 1];

void dfs(int cur, int par) {
    for(pair<int, int> p : g[cur]) {
        if(p.fi != par) {
            dist[p.fi] = dist[cur] ^ p.se;
            dfs(p.fi, cur);
        }
    }
}

struct node {
    int to[2];
    int val;
    node() {
        to[0] = to[1] = val = -1;
    }
};

vector<node> trie;

void add(int x, int idx) {
    int cur = 0;
    for(int b = bits - 1; b >= 0; b--) {
        bool c = (x >> b) & 1;
        if(trie[cur].to[c] == -1) {
            trie[cur].to[c] = trie.size();
            trie.pb(node());
        }
        cur = trie[cur].to[c];
    }
    trie[cur].val = idx;
}

int best(int x) {
    int cur = 0;
    for(int b = bits - 1; b >= 0; b--) {
        bool c = (x >> b) & 1;
        if(trie[cur].to[!c] == -1) {
            cur = trie[cur].to[c];
        } else {
            cur = trie[cur].to[!c];
        }
    }
    return trie[cur].val;
}

void solve() {
    cin >> n;
    for(int i = 1; i < n; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        g[a].pb(mp(b, c));
        g[b].pb(mp(a, c));
    }
    dfs(1, 0);
    trie.assign(1, node());
    for(int i = 1; i <= n; i++) {
        add(dist[i], i);
    }
    for(int i = 1; i <= n; i++) {
        cout << best(dist[i]) << " ";
    }
    cout << "\n";
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva4ms6628 KiB
2Elfogadva7ms8576 KiB
subtask220/20
3Elfogadva7ms8620 KiB
4Elfogadva6ms8680 KiB
5Elfogadva7ms8708 KiB
6Elfogadva6ms8756 KiB
7Elfogadva6ms8796 KiB
8Elfogadva7ms8844 KiB
9Elfogadva7ms8868 KiB
10Elfogadva6ms8912 KiB
11Elfogadva6ms8960 KiB
12Elfogadva7ms9016 KiB
13Elfogadva6ms9236 KiB
14Elfogadva6ms9072 KiB
15Elfogadva6ms9144 KiB
16Elfogadva7ms9160 KiB
subtask380/80
17Elfogadva246ms66876 KiB
18Elfogadva232ms68992 KiB
19Elfogadva237ms71116 KiB
20Elfogadva221ms73268 KiB
21Elfogadva229ms75332 KiB
22Elfogadva224ms77484 KiB
23Elfogadva209ms79584 KiB
24Elfogadva188ms81688 KiB
25Elfogadva200ms83776 KiB
26Elfogadva189ms86176 KiB
27Elfogadva187ms88324 KiB
28Elfogadva196ms90016 KiB
29Elfogadva201ms90248 KiB
30Elfogadva209ms92392 KiB
31Elfogadva217ms94648 KiB
32Elfogadva216ms98728 KiB
33Elfogadva224ms102824 KiB
34Elfogadva224ms109136 KiB
35Elfogadva195ms103044 KiB
36Elfogadva193ms103596 KiB
37Elfogadva216ms103916 KiB
38Elfogadva197ms105972 KiB
39Elfogadva199ms108028 KiB
40Elfogadva185ms111320 KiB