青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

poj 3764 The xor-longest Path 字典樹 + Xor

   這題意思很簡單。求一棵樹里面的一條路徑,使得其異或權(quán)(就是將路徑里面所有邊的權(quán)值異
或起來)最大。
   這個題有兩步。第一步是假定根為節(jié)點0,求出根到其它節(jié)點的異或距離,保存在數(shù)組xor里面,
這個dfs一下即可。然后,用xor[i]^xor[j]就能代表節(jié)點i到節(jié)點j的路徑。這個結(jié)論可以這么看。
如果,i和j之間的路徑經(jīng)過根節(jié)點,那么上面的結(jié)論肯定是正確的。如果,該路徑不經(jīng)過根,那么
xor[i]和xor[j]必定保護從根到某個節(jié)點的相同的一段子路徑,根據(jù)異或的性質(zhì),這段子路徑會
被消掉,所以這個結(jié)論也是這確的。。。
   第二步就是枚舉,xor[i]^xor[j]使得結(jié)果最大了。如果直接暴力,平方的算法肯定會超時的。
由于每個值可以表示成2進制,如果把其它xor值都保存在字典樹里面,用當前的xor[i]去字典樹
里面,一遍就可以找到異或最大值。
   另外,由于樹的點數(shù)太多,只能用鄰接表,用vector模擬鄰接表果斷超時了。。。
改成靜態(tài)鏈表才過。。。

   代碼如下:
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;

const int MAX = 100010;
int nXor[MAX];
bool bVis[MAX];
int nFirst[MAX];
struct Edge
{
    int nE;
    int nW;
    int nNext;
};
Edge egs[MAX * 2];

struct Node
{
    Node* pSons[2];
};
Node nodes[MAX * 32];
Node* pRoot = &nodes[0];
int nNew;

void GetBCode(int nL, int* nBCode, int& nLen)
{
    nLen = 0;
    while (nLen <= 30)
    {
        nBCode[nLen++] = nL % 2;
        nL >>= 1;
    }
    reverse(nBCode, nBCode + nLen);
}

void Insert(int nL)
{
    int nLen = 0;
    int i = 0;
    int nBCode[32];

    GetBCode(nL, nBCode, nLen);
    Node* pNode = pRoot;

    while (i < nLen)
    {
        if (pNode->pSons[nBCode[i]])
        {
            pNode = pNode->pSons[nBCode[i]];
        }
        else
        {
            memset(nodes + nNew, 0, sizeof(nodes[nNew]));
            pNode->pSons[nBCode[i]] = nodes + nNew;
            pNode = nodes + nNew;
            ++nNew;
        }
        ++i;
    }
}

int FindMax(int nL)
{
    int nLen = 0;
    int nAns = 0;
    int i = 0;
    int nBCode[32];
    Node* pNode = pRoot;
    
    GetBCode(nL, nBCode, nLen);
    while (i < nLen)
    {
        int nBest = (nBCode[i] == 0 ? 1 : 0);
        int nBad = (nBCode[i] == 0 ? 0 : 1);
        if (pNode->pSons[nBest])
        {
            nAns = 2 * nAns + nBest;
            pNode = pNode->pSons[nBest];
        }
        else if (pNode->pSons[nBad])
        {
            nAns = 2 * nAns + nBad;
            pNode = pNode->pSons[nBad];
        }
        else break;
        ++i;
    }

    return nAns ^ nL;
}

void Dfs(int nV, int nL)
{
    nXor[nV] = nL;
    bVis[nV] = true;
    for (int e = nFirst[nV]; e != -1; e = egs[e].nNext)
    {
        if (!bVis[egs[e].nE])
        {
            Dfs(egs[e].nE, nL ^ egs[e].nW);
        }
    }
}

int main()
{
    int nN;
    int nU, nV, nW;
    
    while (scanf("%d", &nN) == 1)
    {
        for (int i = 0; i < nN; ++i) nFirst[i] = -1;
        for (int i = 1, j = 0; i < nN; ++i)
        {
            scanf("%d%d%d", &nU, &nV, &nW);
            egs[j].nE = nV;
            egs[j].nW = nW;
            egs[j].nNext = nFirst[nU];
            nFirst[nU] = j++;
            egs[j].nE = nU;
            egs[j].nW = nW;
            egs[j].nNext = nFirst[nV];
            nFirst[nV] = j++;
        }

        memset(bVis, falsesizeof(bool) * nN);
        Dfs(0, 0);

        memset(&nodes[0], 0, sizeof(Node));
        nNew = 1;
        int nAns = 0;
        
        for (int i = 0; i < nN; ++i)
        {
            nAns = max(nAns, FindMax(nXor[i]));
            Insert(nXor[i]);
        }
        printf("%d\n", nAns);
    }

    return 0;
}

posted on 2012-10-12 20:12 yx 閱讀(1045) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)

<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導航

統(tǒng)計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學

網(wǎng)友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品欧美日韩精品| 久久国产精品高清| 亚洲欧美日韩网| a91a精品视频在线观看| 亚洲精品视频免费观看| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美一区二视频在线免费观看| 亚洲人成在线观看网站高清| 亚洲精品乱码视频| 一本色道久久综合亚洲精品按摩 | 久久久久久久成人| 久久中文字幕一区| 欧美国产日韩a欧美在线观看| 欧美另类视频在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | av不卡在线| 99热精品在线| aa级大片欧美三级| 1024成人网色www| 国产精品国产三级国产aⅴ无密码| 欧美日韩日本视频| 美女精品在线观看| 久久视频精品在线| 免费成人高清在线视频| 欧美精品一区在线播放| 欧美有码视频| 亚洲高清精品中出| 一本色道久久综合亚洲精品不 | 国产精品白丝av嫩草影院 | 亚洲日韩视频| 亚洲五月六月| 欧美成人免费网站| 一区二区三区四区五区在线| 久久精品国产999大香线蕉| 欧美成人综合| 国产精品丝袜久久久久久app| 在线成人av| 亚洲欧美美女| 欧美激情一区二区三区在线| 午夜在线视频观看日韩17c| 国产综合18久久久久久| 国产精品一区二区三区四区五区 | 国产精品视频网| 亚洲国产一区在线观看| 欧美在线观看日本一区| 亚洲精选一区二区| 久久亚洲一区二区| 国内精品久久久久久久影视蜜臀| 亚洲图片在线观看| 欧美国产综合视频| 久久激情综合网| 国产区日韩欧美| 亚洲一区在线看| 最近中文字幕日韩精品| 亚洲欧美一区在线| 国产精品久久久久9999吃药| 99国产精品久久久久久久| 免费观看在线综合色| 亚洲欧美影院| 国产毛片一区| 欧美一区成人| 亚洲综合日韩| 国产精品永久入口久久久| 亚洲一区二区视频在线| 久久先锋资源| 日韩午夜三级在线| 免费美女久久99| 午夜精品区一区二区三| 国产精品综合av一区二区国产馆| 一区二区三区免费在线观看| 亚洲黄色高清| 国产精品成人在线观看| 亚洲图片你懂的| 国产网站欧美日韩免费精品在线观看 | 亚洲视频免费在线| 欧美日韩亚洲精品内裤| 亚洲最新中文字幕| 亚洲免费av片| 国产精品视频午夜| 久久久久久网站| 久久精品一区二区三区不卡牛牛| 好看的av在线不卡观看| 欧美α欧美αv大片| 欧美国产精品劲爆| 亚洲性感激情| 亚洲小说春色综合另类电影| 国产视频一区二区三区在线观看| 久久偷看各类wc女厕嘘嘘偷窃| 一区在线观看| 欧美日韩国产91| 欧美xxx成人| 久久成人精品| 香蕉精品999视频一区二区| 亚洲午夜视频| 中文日韩欧美| 香蕉久久国产| 亚洲大片在线| 亚洲图片激情小说| 亚洲精品一二三区| 国产精品日韩| 美女主播精品视频一二三四| 欧美精品高清视频| 欧美一区二区精美| 噜噜噜在线观看免费视频日韩| 日韩亚洲在线观看| 午夜精品短视频| 亚洲精品视频一区二区三区| 中文在线资源观看网站视频免费不卡| 国产区二精品视| 亚洲精品国产品国语在线app| 国产精品伦子伦免费视频| 欧美高清不卡| 国产性做久久久久久| 亚洲精品免费在线观看| 尹人成人综合网| 午夜欧美电影在线观看| 99精品国产在热久久下载| 久久精品中文| 久久精品一区二区三区不卡| 欧美天堂亚洲电影院在线播放 | 午夜精品在线观看| 欧美精品乱人伦久久久久久 | 亚洲国产精品va在线看黑人 | 国产日韩精品一区| 日韩视频一区二区三区| 亚洲第一福利社区| 久久精品国产第一区二区三区最新章节 | 午夜日韩在线观看| 亚洲欧美日本另类| 欧美日韩精品在线观看| 欧美黑人一区二区三区| 伊人狠狠色j香婷婷综合| 欧美激情网站在线观看| 欧美高清你懂得| 99av国产精品欲麻豆| 国产日韩欧美在线观看| 你懂的网址国产 欧美| 99国内精品| 欧美成人免费网站| 午夜电影亚洲| 亚洲欧美日韩一区二区| 日韩午夜视频在线观看| 国产日韩在线看| 欧美成人一区二区在线| 欧美日韩中国免费专区在线看| 榴莲视频成人在线观看| 国产自产女人91一区在线观看| 亚洲自拍偷拍色片视频| 香蕉久久国产| 国产精品永久免费视频| 欧美亚洲色图校园春色| 久久精品一区| 黑人巨大精品欧美黑白配亚洲| 亚洲欧美三级在线| 久久久久国产精品人| 国产一区二区三区在线观看精品 | 久久亚洲免费| 欧美fxxxxxx另类| 亚洲国产欧美一区二区三区同亚洲| 久久免费的精品国产v∧| 欧美凹凸一区二区三区视频| 亚洲国产精品va在看黑人| 欧美日产一区二区三区在线观看| 亚洲视频在线观看三级| 久久久久久夜| 亚洲免费观看高清完整版在线观看熊 | 亚洲午夜一区二区| 国产乱理伦片在线观看夜一区| 欧美一级视频精品观看| 欧美福利在线观看| 中日韩男男gay无套| 国产免费观看久久黄| 久久亚洲图片| 亚洲午夜小视频| 女女同性精品视频| 亚洲天堂网站在线观看视频| 国产亚洲成av人在线观看导航 | 在线看成人片| 欧美日韩国产系列| 蜜桃伊人久久| 亚洲啪啪91| 在线亚洲激情| 久久五月天婷婷| 夜夜嗨av一区二区三区网页| 国产精品男gay被猛男狂揉视频| 久久久久久91香蕉国产| 日韩亚洲精品电影| 久久久久久久一区二区| 中国成人在线视频| 在线免费观看欧美| 国产精品久久久999| 欧美成人r级一区二区三区| 亚洲夜间福利| 亚洲国产高清高潮精品美女| 欧美一区二区在线看| 99精品欧美| 一区免费观看视频| 国产精品区一区| 欧美精品亚洲一区二区在线播放| 欧美一区国产在线|