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

算法學(xué)社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0
題目描述:
    給一顆結(jié)點(diǎn)數(shù)為(100,000)的樹(shù),最多詢(xún)問(wèn)100,000次。每次詢(xún)問(wèn)對(duì)兩個(gè)結(jié)點(diǎn)X,Y,以X為根,Y的最小標(biāo)號(hào)的孩子,Y的最小標(biāo)號(hào)的后代。
吐槽:
    1. 這么難寫(xiě)的題為什么大家都當(dāng)水題做阿...
算法分析:
    
    對(duì)于X,Y,我們求出其LCA,U。
    如果U是Y的父親,那么一切都不變。用預(yù)處理的結(jié)果就可以。
    如果U是Y,那么我們可以快速求出,含有后代X的Y的兒子X(jué)'。
    檢查X'是否是Y的最小孩子(兒子)。如果是,那么結(jié)果是Y的次小兒子(孩子)。否則是Y的最小兒子(孩子)。
    于是我們樹(shù)形DP,求出最小與次小(兒子,后代)就可以了。寫(xiě)起來(lái)很猥瑣,容易出錯(cuò)。
    LCA的寫(xiě)法是參照shi哥的代碼。
    先預(yù)處理求出u的(1,2,4,8,...)代祖先,
    先讓x,y處于同一層。
    然后讓x,y一點(diǎn)一點(diǎn)向上爬,直到爬到恰好x==y的位置就是LCA了。
    
#include<iostream>
#include<cassert>
#include<cstdio>
using namespace std;
const int maxb = 17;
const int V = 1<<maxb;
int e,P[V][maxb], head[V], nxt[V<<1], pnt[V<<1], mn[V], sd[V], mn1[V],sd1[V];
// dp
const int inf = ~0u>>2;
int dep[V];
void dfs(int u,int f){
    P[u][0] = f;
    for(int i =1; i< maxb; i++)
        P[u][i] = P[P[u][i-1]][i-1];
    if(f!=u) mn[u] = f; else mn[u] = inf;
    mn1[u] = sd1[u] = inf;
    sd[u] = inf;
    for(int i=head[u];i!=-1;i=nxt[i]) {
        int v = pnt[i];
        if(v == f) continue;
        dep[v] = dep[u] + 1;
        if(v < mn[u]) {sd[u] = mn[u]; mn[u] = v;}
        else if(v < sd[u]) sd[u] = v;
        dfs(v,u);
        int fst,snd;
        if(v > mn1[v]) {
            fst = mn1[v];
            snd = min(v, sd1[v]);
        }
        else {
            fst = v;
            snd = mn1[v];
        }
        if(fst < mn1[u]){
            sd1[u] = mn1[u];
            mn1[u] = fst;
        }
        else {
            sd1[u] = min(sd1[u],fst);
        }
    }
}
// build
void add(int u,int v){
    nxt[e] = head[u];
    head[u] = e;
    pnt[e++] = v;
}
// LCA
void go(int &u,int d){
    for(int i=0;i<maxb;i++){
        if((1<<i) & d) u = P[u][i];
    }
}
int LCA(int x,int y){
    if(dep[x] > dep[y]) swap(x,y);
    go(y,dep[y] - dep[x]);
    if(x == y) return x;
    for(int i=maxb-1;i>=0;i--){
        if(P[x][i] != P[y][i])
            x = P[x][i], y = P[y][i];
    }
    assert(P[x][0]==P[y][0]);
    return P[x][0];
}
// work
void work(int x,int y){
    int u = LCA(x,y);
    if(sd[y] == inf) {puts("no answers!"); return;}
    if(u!=y){
        printf("%d %d\n",P[y][0] == mn[y] ? sd[y] : mn[y], mn1[y]);
    }
    else {
        go(x,dep[x]-dep[y]-1);
        
        printf("%d %d\n",x == mn[y] ? sd[y]: mn[y] , y == 1 ? (min(mn1[x],x) == mn1[y]? sd1[y]: mn1[y]): 1);
    }
}
int main(){
    int test;
    scanf("%d",&test);
    while(test--){
        int u,v,n,m;
        e = 0;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++) head[i] = -1;
        for(int i=1;i<n;i++){
            scanf("%d%d",&u,&v);
            add(u,v);
            add(v,u);
        }
        dep[1] = 0;
        dfs(1,1);
        while(m--){
            scanf("%d%d",&u,&v);
            work(u,v);
        }
        puts("");
    }
}
posted on 2012-07-17 10:53 西月弦 閱讀(507) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 解題報(bào)告
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美福利一区二区三区| 亚洲性xxxx| 亚洲午夜电影网| 免费人成精品欧美精品| 欧美xxxx在线观看| 欧美在线观看视频| 欧美一级片一区| 性视频1819p久久| 亚洲欧美日韩国产一区二区| 夜夜嗨av色一区二区不卡| 日韩午夜三级在线| 亚洲深夜福利视频| 性色av一区二区三区红粉影视| 午夜精品视频网站| 久久综合一区二区| 欧美视频在线免费看| 国产日韩欧美麻豆| 91久久久在线| 亚洲欧美日韩在线综合| 欧美在线免费| 亚洲国产一区二区a毛片| 美女网站久久| 亚洲精品视频免费观看| 亚洲国产欧美久久| 欧美精品xxxxbbbb| 国产精品一香蕉国产线看观看 | 一区二区三区在线免费播放| 国内成+人亚洲| 麻豆精品网站| 国产一区二区三区免费不卡| 亚洲国产一二三| 亚洲综合三区| 蜜桃久久精品一区二区| 亚洲高清精品中出| 亚洲一区二区成人| 久久国产精品一区二区| 欧美激情视频一区二区三区在线播放 | 亚洲免费成人| 亚洲一级片在线看| 香蕉久久一区二区不卡无毒影院 | 亚洲大胆人体视频| 亚洲精品一区二| 亚洲欧美国产高清va在线播| 亚洲私人影院在线观看| 欧美一区二区视频在线观看2020| 久久久久国产一区二区三区四区| 欧美成人首页| 国产美女搞久久| 亚洲黄一区二区三区| 一区二区黄色| 午夜一区二区三区在线观看| 制服诱惑一区二区| 亚洲国产91精品在线观看| 日韩视频不卡| 免费观看国产成人| 亚洲国产精品悠悠久久琪琪| 亚洲欧美日韩一区在线| 欧美成人按摩| 欧美日韩亚洲一区二| 国产精品久久久久av免费| 伊人成年综合电影网| 亚洲尤物影院| 亚洲国产一成人久久精品| 性色av一区二区三区在线观看| 欧美精品日本| 在线不卡视频| 久久精品一区二区| 亚洲天堂av在线免费观看| 欧美高清视频免费观看| 久久五月天婷婷| 亚洲欧美清纯在线制服| 国产精品国产自产拍高清av王其| 激情视频一区二区| 欧美一级免费视频| 一区二区三区 在线观看视| 免费永久网站黄欧美| 国产色综合久久| 亚洲影视中文字幕| 亚洲免费精彩视频| 欧美精品18+| 亚洲精品久久久久久下一站| 免费看亚洲片| 亚洲性夜色噜噜噜7777| 欧美激情综合网| 日韩午夜三级在线| 亚洲国产综合91精品麻豆| 久久男人av资源网站| 狠狠久久婷婷| 老牛国产精品一区的观看方式| 午夜精品在线视频| 国产日韩精品在线播放| 欧美中文字幕精品| 欧美一区二区高清在线观看| 国产日韩一区二区| 久久深夜福利免费观看| 久久久久国产精品一区| 在线播放精品| 亚洲欧洲精品一区二区三区不卡 | 99综合精品| 亚洲国产欧美一区二区三区久久| 女主播福利一区| 日韩亚洲一区在线播放| 牛牛影视久久网| 久久九九久精品国产免费直播| 欧美日韩激情网| **欧美日韩vr在线| 免费久久99精品国产| 欧美黄污视频| 亚洲在线第一页| 欧美伊人久久久久久久久影院 | 91久久国产综合久久| 亚洲国产精品久久久久秋霞影院 | 欧美与欧洲交xxxx免费观看| 一区二区三区在线观看欧美| 欧美成人一二三| 欧美日韩激情网| 欧美一区二区三区四区在线观看| 久久成人精品视频| 亚洲精品免费电影| 蜜臀a∨国产成人精品| 欧美激情视频在线免费观看 欧美视频免费一| 日韩性生活视频| 免费在线观看一区二区| 久久久精品日韩欧美| 欧美第十八页| 99国产精品99久久久久久粉嫩| 久久男女视频| 亚洲电影免费在线观看| 在线视频欧美日韩| 久久激情五月丁香伊人| 亚洲精品护士| 狠狠干综合网| 欧美福利视频| 黄色成人av网站| 99视频在线观看一区三区| 亚洲精品社区| 久久精品日韩| 噜噜噜躁狠狠躁狠狠精品视频| 欧美精品成人在线| 91久久久久久久久| 一区视频在线看| 久久人人爽人人| 久久久91精品国产| 狠狠色伊人亚洲综合网站色| 在线视频欧美精品| 亚洲欧美在线观看| 欧美日韩1234| 亚洲天堂成人在线观看| 99热在线精品观看| 美女亚洲精品| 你懂的视频欧美| 亚洲精品在线电影| 噜噜爱69成人精品| 亚洲精品看片| 日韩亚洲一区在线播放| 欧美天天影院| 在线视频亚洲| 久久蜜臀精品av| 狠狠v欧美v日韩v亚洲ⅴ| 免费观看国产成人| 亚洲成人自拍视频| 亚洲在线视频| 国产精品视频一区二区高潮| 欧美在线不卡| 免费观看不卡av| 亚洲亚洲精品在线观看| 欧美午夜精品久久久久久久| 性欧美超级视频| 麻豆精品91| 亚洲欧美bt| 国产性天天综合网| 欧美激情视频一区二区三区在线播放| 亚洲观看高清完整版在线观看| 亚洲一级在线观看| 国产精品一区久久久久| 葵司免费一区二区三区四区五区| 欧美国产日韩免费| 一区二区三区视频免费在线观看| 国产乱子伦一区二区三区国色天香| 亚洲精品在线视频观看| 亚洲欧美国产一区二区三区| 国产精品青草久久| 男女av一区三区二区色多| 亚洲国产成人高清精品| 午夜视频久久久| 一区二区三区在线免费播放| 欧美日本韩国| 亚洲欧美精品在线观看| 亚洲日本欧美| 欧美在线一级va免费观看| 亚洲美女色禁图| 国产精品久久久久天堂| 欧美成人一区二区| 亚洲午夜羞羞片| 亚洲三级电影在线观看| 久久不射中文字幕| 亚洲影院一区| 亚洲国产另类 国产精品国产免费| 国产精品亚洲不卡a| 美女爽到呻吟久久久久|