1249 2022. 03. 28 22:21:15 k_balint Multiplikátoros telebabrátor cpp14 Időlimit túllépés 20/100 575ms 358592 KiB
#include <bits/stdc++.h>
using namespace std;
const int c=1e5+5;
const int K=31;

struct edge{
    int v,w;
    edge(int vv, int ww){
        v=vv; w=ww;
    }
    edge(){
        v=w=0;
    }
};

struct node{
    vector<int> to;
    node(){
        to.resize(2);
        to[0]=to[1]=-1; 
    }
};

node trie[32*c];
int sz=1;

inline void add(int k){
    int cur=0;
    for(int i=K-1;i>=0;i--){
        int j=(k>>i)&1;
        if(trie[cur].to[j]==-1){
            trie[cur].to[j]=sz++;
        }
        cur=trie[cur].to[j];
    }
}

inline int maxi(int k){
    int res=0; int cur=0;
    for(int i=K-1;i>=0;i--){
        int j=(k>>i)&1;
        if(trie[cur].to[j^1]!=-1){
            res |= 1<<i;
            cur=trie[cur].to[j^1];
        }
        else cur=trie[cur].to[j];
    }
    return res^k;
}

vector<edge> adj[c];
int d[c];
vector<pair<int,int>> mp;

void dfs(int v, int p){
    mp.emplace_back(make_pair(d[v],v));
    add(d[v]);
    for(edge x:adj[v]){
        if(x.v != p){
            d[x.v]=d[v]^x.w;
            dfs(x.v,v);
        }
    }
}

inline int read(){
    int res=0; char ch=getchar();
    while(!isdigit(ch)){
        ch=getchar();
    }


    while(isdigit(ch)){
        res=(res<<3)+(res<<1)+ch-'0';
        ch=getchar();
    }

    return res;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n=read();
    for(int i=1;i<n;i++){
        int a,b,w; a=read(); b=read(); w=read();
        adj[a].emplace_back(edge(b,w));
        adj[b].emplace_back(edge(a,w));
    }

    dfs(1,0);
    sort(mp.begin(),mp.end());
    for(int i=1;i<=n;i++){
        int cur=maxi(d[i]);
        auto it=lower_bound(mp.begin(),mp.end(),make_pair(cur,-1));
        cout << it->second << ' ';
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 356ms 356856 KiB
2 Elfogadva 300ms 357204 KiB
subtask2 20/20
3 Elfogadva 293ms 357264 KiB
4 Elfogadva 356ms 357328 KiB
5 Elfogadva 282ms 357368 KiB
6 Elfogadva 282ms 357328 KiB
7 Elfogadva 287ms 357464 KiB
8 Elfogadva 333ms 357488 KiB
9 Elfogadva 291ms 357452 KiB
10 Elfogadva 367ms 357652 KiB
11 Elfogadva 300ms 357428 KiB
12 Elfogadva 333ms 358492 KiB
13 Elfogadva 305ms 358592 KiB
14 Elfogadva 335ms 358384 KiB
15 Elfogadva 317ms 358452 KiB
16 Elfogadva 296ms 358416 KiB
subtask3 0/80
17 Időlimit túllépés 513ms 185476 KiB
18 Időlimit túllépés 524ms 186284 KiB
19 Időlimit túllépés 535ms 184952 KiB
20 Időlimit túllépés 528ms 185356 KiB
21 Időlimit túllépés 542ms 186404 KiB
22 Időlimit túllépés 515ms 185604 KiB
23 Időlimit túllépés 560ms 185280 KiB
24 Időlimit túllépés 547ms 185796 KiB
25 Időlimit túllépés 527ms 185032 KiB
26 Időlimit túllépés 570ms 185864 KiB
27 Időlimit túllépés 517ms 186660 KiB
28 Időlimit túllépés 532ms 185384 KiB
29 Időlimit túllépés 521ms 185276 KiB
30 Időlimit túllépés 564ms 186424 KiB
31 Időlimit túllépés 521ms 186132 KiB
32 Időlimit túllépés 565ms 188172 KiB
33 Időlimit túllépés 575ms 187344 KiB
34 Időlimit túllépés 519ms 190848 KiB
35 Időlimit túllépés 522ms 185332 KiB
36 Időlimit túllépés 560ms 186028 KiB
37 Időlimit túllépés 526ms 187128 KiB
38 Időlimit túllépés 560ms 186116 KiB
39 Időlimit túllépés 527ms 185732 KiB
40 Időlimit túllépés 541ms 187424 KiB