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

算法學(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>
            一区二区三区欧美激情| 国模套图日韩精品一区二区| 亚洲无线视频| 亚洲深夜福利视频| 亚洲精品美女91| 欧美成人高清视频| 欧美高清在线精品一区| 亚洲福利视频一区| 亚洲乱码久久| 亚洲男人av电影| 久久久99爱| 久久在线免费观看视频| 美女性感视频久久久| 玖玖视频精品| 美女在线一区二区| 欧美三级第一页| 国产精品一区二区久久久| 欧美jizzhd精品欧美喷水 | 亚洲乱码日产精品bd| 亚洲精品久久久久久久久久久久久 | 91久久夜色精品国产网站| 亚洲免费观看高清完整版在线观看熊 | 欧美日韩在线三级| 99精品视频免费全部在线| 亚洲国产日韩欧美一区二区三区| 欧美三区不卡| 国产精品视频免费观看| 国产一区二区三区无遮挡| 最近看过的日韩成人| 亚洲一区二区视频| 久久精品一区二区国产| 亚洲国产精品久久久久秋霞影院 | 久久国产欧美日韩精品| 欧美激情欧美激情在线五月| 在线视频日韩精品| 美女日韩在线中文字幕| 国产日韩欧美黄色| 亚洲国产91精品在线观看| 欧美风情在线| 亚洲免费影视| 欧美日韩日本视频| 亚洲第一精品夜夜躁人人躁| 欧美在线精品免播放器视频| 亚洲免费福利视频| 欧美亚洲一区二区在线观看| 久久成人人人人精品欧| 亚洲乱码国产乱码精品精| 韩国av一区二区三区在线观看| 在线播放亚洲一区| 91久久综合| 狠狠色综合网| 亚洲女爱视频在线| 欧美大色视频| 亚洲欧美三级在线| 91久久精品一区| 亚洲欧美国产日韩天堂区| 欧美成人综合在线| 久久久精品五月天| 久久大香伊蕉在人线观看热2| 国产视频一区在线观看一区免费| 亚洲天堂免费在线观看视频| 亚洲国产精品久久久久婷婷884 | 99精品久久久| 欧美xxxx在线观看| 亚洲一二区在线| 国产精品久久久久久av福利软件| 一区二区亚洲精品| 性色av一区二区三区在线观看| 一区二区三区成人| 久久综合五月天婷婷伊人| 欧美日韩一区二区视频在线观看 | 欧美成人a∨高清免费观看| 欧美一级电影久久| 99在线精品视频在线观看| 欧美一区中文字幕| 国产精品福利久久久| 亚洲精品国产精品国自产在线| 久久久午夜视频| 亚洲欧美日韩国产成人精品影院| 国产精品美女久久福利网站| 亚洲国产日韩欧美在线99| 久久久久久久一区二区三区| 亚洲最新视频在线| 久久久亚洲国产天美传媒修理工| 国产综合久久久久影院| 久久九九精品99国产精品| 亚洲免费在线电影| 欧美日韩成人一区| 一区二区三区四区国产| 亚洲人成网站在线观看播放| 免费高清在线一区| 国产精品青草久久久久福利99| 欧美一区二区三区视频| 日韩亚洲精品在线| 亚洲电影激情视频网站| 国产精品初高中精品久久| 一本色道综合亚洲| 久久久精品一区二区三区| 久久精品国产一区二区三区| 国产精品久久久久高潮| 西瓜成人精品人成网站| 亚洲欧美另类久久久精品2019| 欧美激情二区三区| 一区二区三区 在线观看视| 亚洲国产欧美在线| 欧美日韩裸体免费视频| 亚洲淫性视频| 欧美一区二区三区久久精品茉莉花| 国产亚洲综合性久久久影院| 亚洲黄色一区| 国产精品成人午夜| 久久久精品一区二区三区| 久久蜜臀精品av| 亚洲视频大全| 欧美一区二区在线| 亚洲欧洲三级| 中日韩高清电影网| 黄色小说综合网站| 亚洲精品一区二区三区蜜桃久| 欧美激情综合在线| 免费一区二区三区| 欧美日韩免费一区二区三区| 久久久久综合一区二区三区| 欧美国产大片| 久久精品理论片| 欧美日韩国产a| 久久亚洲高清| 欧美性开放视频| 欧美激情国产精品| 国产精品视频免费观看| 欧美激情视频在线播放| 精品91在线| 亚洲在线观看免费| 国产日韩1区| 久久久中精品2020中文| 国产视频精品va久久久久久| 激情五月婷婷综合| 亚洲在线观看视频| 一区二区高清在线| 麻豆精品视频| 欧美激情成人在线| 伊人精品视频| 亚洲尤物在线| 亚洲色图综合久久| 欧美国产日韩亚洲一区| 亚洲激情第一页| **欧美日韩vr在线| 久久久精品网| 美女福利精品视频| 欧美私人啪啪vps| 欧美成人国产va精品日本一级| 国产日韩一区二区| 亚洲一区视频在线| 久久精品夜夜夜夜久久| 国产精品永久免费在线| 在线一区二区三区四区| 在线一区亚洲| 裸体一区二区| 亚洲欧洲在线一区| 美女露胸一区二区三区| 欧美在线观看视频| 国产乱码精品1区2区3区| 欧美高清在线观看| 中文一区二区| 欧美亚一区二区| 亚洲视屏在线播放| 欧美亚洲三级| 亚洲国产精品久久91精品| 久久久国产精品一区二区三区| 久久久久久久一区| 亚洲电影下载| 久久精品国产一区二区电影| 欧美福利小视频| 一本色道久久综合狠狠躁篇怎么玩| 欧美日韩成人精品| 亚洲一级电影| 亚洲国产日韩欧美一区二区三区| 日韩亚洲精品视频| 欧美三级特黄| 亚洲欧美国产制服动漫| 亚洲欧美日韩电影| 国产日韩欧美不卡| 久久久综合精品| 亚洲人成网站精品片在线观看 | 久久精品视频在线播放| 国产精品久久久久久久第一福利| 亚洲欧美制服另类日韩| 久久久久久久综合| 最新成人在线| 久久精品国产久精国产一老狼| 亚洲精品乱码| 欧美在线观看你懂的| 亚洲国产精品一区二区三区| 欧美三级乱码| 亚洲免费影视| 亚洲国产精品一区| 欧美中文字幕不卡| 亚洲国产精品久久久久秋霞蜜臀| 国产精品v日韩精品v欧美精品网站| 亚洲一区二区高清|