5313 | 2023-04-25 20:10:21 | Catt | Multiplikátoros telebabrátor | cpp17 | Időlimit túllépés 20/100 | 586ms | 223656 KiB |
#include <bits/stdc++.h>
using namespace std;
const int k = 31;
vector<vector<pair<int, int> > > g;
vector<int> d;
void dfs(int x, int p = -1) {
for(pair<int, int> sz : g[x]) {
if(sz.first == p )continue;
d[sz.first] = d[x] ^ sz.second;
dfs(sz.first, x);
}
}
struct node {
vector<int> to;
int end;
node() {
end = -1;
to.assign(2, -1);
}
};
vector<node> trie(1);
void add(int x, int ind) {
int cur = 0;
for(int i = k; i >= 0; i--) {
int to = (((1<<i) & x) != 0);
if(trie[cur].to[to] == -1) {
trie[cur].to[to] = trie.size();
trie.push_back(node());
}
cur = trie[cur].to[to];
}
trie[cur].end = ind;
}
int ask(int x) {
int cur = 0;
for(int i = k; i >= 0; i--) {
int to = (((1<<i) & x) != 0);
if(trie[cur].to[1-to] == -1) {
cur = trie[cur].to[to];
}
else cur = trie[cur].to[1-to];
}
return trie[cur].end;
}
int main() {
int n;
cin >>n;
g.resize(n+1);
d.resize(n+1, 0);
for(int i = 0; i < n-1; i++) {
int x,y,z;
cin >> x >> y >> z;
g[x].push_back({y, z});
g[y].push_back({x, z});
}
dfs(1);
for(int i = 1; i <= n; i++) add(d[i], i);
for(int i = 1; i <= n; i++) cout << ask(d[i]) << ' ';
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 3ms | 1816 KiB | ||||
2 | Elfogadva | 10ms | 8292 KiB | ||||
subtask2 | 20/20 | ||||||
3 | Elfogadva | 12ms | 8660 KiB | ||||
4 | Elfogadva | 10ms | 8796 KiB | ||||
5 | Elfogadva | 12ms | 8792 KiB | ||||
6 | Elfogadva | 12ms | 9092 KiB | ||||
7 | Elfogadva | 12ms | 9340 KiB | ||||
8 | Elfogadva | 10ms | 9332 KiB | ||||
9 | Elfogadva | 10ms | 9380 KiB | ||||
10 | Elfogadva | 12ms | 9428 KiB | ||||
11 | Elfogadva | 12ms | 9716 KiB | ||||
12 | Elfogadva | 12ms | 10100 KiB | ||||
13 | Elfogadva | 12ms | 10268 KiB | ||||
14 | Elfogadva | 12ms | 10388 KiB | ||||
15 | Elfogadva | 10ms | 10556 KiB | ||||
16 | Elfogadva | 12ms | 11052 KiB | ||||
subtask3 | 0/80 | ||||||
17 | Időlimit túllépés | 551ms | 216368 KiB | ||||
18 | Időlimit túllépés | 570ms | 112980 KiB | ||||
19 | Időlimit túllépés | 555ms | 220580 KiB | ||||
20 | Időlimit túllépés | 565ms | 220532 KiB | ||||
21 | Időlimit túllépés | 578ms | 115292 KiB | ||||
22 | Időlimit túllépés | 544ms | 220876 KiB | ||||
23 | Időlimit túllépés | 542ms | 220880 KiB | ||||
24 | Időlimit túllépés | 586ms | 115352 KiB | ||||
25 | Időlimit túllépés | 555ms | 220632 KiB | ||||
26 | Időlimit túllépés | 545ms | 220908 KiB | ||||
27 | Időlimit túllépés | 542ms | 220904 KiB | ||||
28 | Időlimit túllépés | 550ms | 220908 KiB | ||||
29 | Időlimit túllépés | 552ms | 220536 KiB | ||||
30 | Időlimit túllépés | 563ms | 115192 KiB | ||||
31 | Időlimit túllépés | 554ms | 115196 KiB | ||||
32 | Időlimit túllépés | 561ms | 222176 KiB | ||||
33 | Időlimit túllépés | 560ms | 223656 KiB | ||||
34 | Időlimit túllépés | 564ms | 118904 KiB | ||||
35 | Időlimit túllépés | 538ms | 222016 KiB | ||||
36 | Időlimit túllépés | 532ms | 221876 KiB | ||||
37 | Időlimit túllépés | 550ms | 116128 KiB | ||||
38 | Időlimit túllépés | 550ms | 221824 KiB | ||||
39 | Időlimit túllépés | 531ms | 221576 KiB | ||||
40 | Időlimit túllépés | 569ms | 116004 KiB |