zoukankan      html  css  js  c++  java
  • 最大xor路径(poj3764)

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    int d[6000000][2],cnt;
    struct edge
    {
        int to,w,next;
        edge(int x,int y,int z):to(x),w(y),next(z){}
        edge(){}
    }e[400005];
    int num[100005],vis[100005],tot,head[100005];
    void addedge(int from,int to,int w)
    {
        e[tot]=edge(to,w,head[from]);
        head[from]=tot++;
    }
    void dfs(int v,int w)
    {
        vis[v]=1;
        num[v]=w;
        for(int i=head[v];i!=-1;i=e[i].next)
        {
            if(!vis[e[i].to])
                dfs(e[i].to,w^e[i].w);
        }
    }
    void add(int x)
    {
        int p=1;
        for(int i=30;i>=0;i--)
        {
            if(d[p][(x>>i)&1]==0)
                d[p][(x>>i)&1]=++cnt;
            p=d[p][(x>>i)&1];
        }
    }
    int find(int x)
    {
        int p=1,ans=0;
        for(int i=30;i>=0;i--)
        {
            int t=(x>>i)&1;
            if(d[p][1^t])
            {
                ans+=(1<<i);
                p=d[p][1^t];
            }
            else p=d[p][t];
        }
        return ans;
    }
    int main()
    {
    
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            tot=0;
            memset(d,0,sizeof(d));
            memset(vis,0,sizeof(vis));
            memset(head,-1,sizeof(head));
            cnt=1;
            for(int i=1;i<n;i++)
            {
            int x,y,w;
            scanf("%d%d%d",&x,&y,&w);
            addedge(x,y,w);
            addedge(y,x,w);
            }
            dfs(0,0);
            int ans=0;
            for(int i=0;i<n;i++)
            {
                add(num[i]);
                ans=max(ans,find(num[i]));
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    BZOJ5368:[PKUSC2018]真实排名(组合数学)
    【HDU2222】Keywords Search
    KMP算法
    【BZOJ3262】 陌上花开
    【POJ2104】kth num
    【BZOJ1251】序列终结者
    【BZOJ3524】 [Poi2014]Couriers
    【BZOJ2049】 [Sdoi2008]Cave 洞穴勘测
    【BZOJ1468】Tree
    【BZOJ2152】聪聪可可
  • 原文地址:https://www.cnblogs.com/lmjer/p/9031050.html
Copyright © 2011-2022 走看看