1250 2022. 03. 28 22:27:38 k_balint Multiplikátoros telebabrátor cpp14 Időlimit túllépés 20/100 611ms 357856 KiB
#include <bits/stdc++.h>
using namespace std;
const int c=1e5+5;
const int K=30;

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];
map<int,int> mp;

void dfs(int v, int p){
    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);
    
    for(int i=1;i<=n;i++){
        mp[d[i]]=i;
        add(d[i]);
    }

    for(int i=1;i<=n;i++){
        int cur=maxi(d[i]);
        cout << mp[cur] << ' ';
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 370ms 357020 KiB
2 Elfogadva 377ms 357460 KiB
subtask2 20/20
3 Elfogadva 323ms 357484 KiB
4 Elfogadva 277ms 357348 KiB
5 Elfogadva 319ms 357308 KiB
6 Elfogadva 284ms 357452 KiB
7 Elfogadva 287ms 357456 KiB
8 Elfogadva 293ms 357488 KiB
9 Elfogadva 270ms 357524 KiB
10 Elfogadva 275ms 357632 KiB
11 Elfogadva 277ms 357580 KiB
12 Elfogadva 282ms 357696 KiB
13 Elfogadva 284ms 357760 KiB
14 Elfogadva 277ms 357752 KiB
15 Elfogadva 296ms 357856 KiB
16 Elfogadva 303ms 357772 KiB
subtask3 0/80
17 Időlimit túllépés 561ms 188232 KiB
18 Időlimit túllépés 589ms 190312 KiB
19 Időlimit túllépés 528ms 192324 KiB
20 Időlimit túllépés 513ms 193340 KiB
21 Időlimit túllépés 595ms 191140 KiB
22 Időlimit túllépés 546ms 193220 KiB
23 Időlimit túllépés 597ms 194444 KiB
24 Időlimit túllépés 531ms 194304 KiB
25 Időlimit túllépés 523ms 189336 KiB
26 Időlimit túllépés 611ms 191700 KiB
27 Időlimit túllépés 598ms 193708 KiB
28 Időlimit túllépés 597ms 195656 KiB
29 Időlimit túllépés 569ms 192252 KiB
30 Időlimit túllépés 523ms 192136 KiB
31 Időlimit túllépés 521ms 186848 KiB
32 Időlimit túllépés 522ms 186552 KiB
33 Időlimit túllépés 537ms 188160 KiB
34 Időlimit túllépés 533ms 192968 KiB
35 Időlimit túllépés 523ms 189312 KiB
36 Időlimit túllépés 569ms 189072 KiB
37 Időlimit túllépés 560ms 187584 KiB
38 Időlimit túllépés 532ms 187548 KiB
39 Időlimit túllépés 528ms 187592 KiB
40 Időlimit túllépés 513ms 187016 KiB