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

算法學社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0
題目描述:
    給一顆結點數為(100,000)的樹,最多詢問100,000次。每次詢問對兩個結點X,Y,以X為根,Y的最小標號的孩子,Y的最小標號的后代。
吐槽:
    1. 這么難寫的題為什么大家都當水題做阿...
算法分析:
    
    對于X,Y,我們求出其LCA,U。
    如果U是Y的父親,那么一切都不變。用預處理的結果就可以。
    如果U是Y,那么我們可以快速求出,含有后代X的Y的兒子X'。
    檢查X'是否是Y的最小孩子(兒子)。如果是,那么結果是Y的次小兒子(孩子)。否則是Y的最小兒子(孩子)。
    于是我們樹形DP,求出最小與次小(兒子,后代)就可以了。寫起來很猥瑣,容易出錯。
    LCA的寫法是參照shi哥的代碼。
    先預處理求出u的(1,2,4,8,...)代祖先,
    先讓x,y處于同一層。
    然后讓x,y一點一點向上爬,直到爬到恰好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) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久久久久| 在线免费高清一区二区三区| 99国产一区| 欧美黄色免费网站| 久久这里只有| 亚洲黄网站在线观看| 久久九九精品99国产精品| 亚洲欧美怡红院| 国产在线视频欧美一区二区三区| 欧美伊久线香蕉线新在线| 亚洲精品久久久久久久久久久久| 亚洲级视频在线观看免费1级| 欧美激情四色| 久久精品一区二区三区不卡牛牛| 久久亚洲综合网| 亚洲一区二区精品在线| 欧美亚洲网站| 午夜亚洲性色视频| 另类图片国产| 久久精品一区二区三区不卡| 欧美日韩dvd在线观看| 女同性一区二区三区人了人一| 欧美日本一区| 亚洲国产精品一区制服丝袜| 国产日韩在线一区| 亚洲字幕一区二区| 亚洲欧美日韩精品久久久| 欧美人成在线| 亚洲精品色图| 午夜影院日韩| 欧美三级电影精品| 正在播放欧美视频| 宅男噜噜噜66一区二区| 欧美久久99| 亚洲精品免费在线播放| 妖精视频成人观看www| 欧美日韩免费在线| 一区二区电影免费在线观看| 亚洲调教视频在线观看| 国产精品亚洲综合久久| 亚洲午夜一区| 欧美成人激情视频免费观看| 激情久久五月| 欧美精品免费在线| 99国产精品视频免费观看| 欧美亚洲自偷自偷| 亚洲国产日韩欧美在线图片| 欧美在线91| 国语自产在线不卡| 美女国产精品| 亚洲一区二区免费看| 男人的天堂亚洲在线| 亚洲性人人天天夜夜摸| 国产一在线精品一区在线观看| 久久久精品国产99久久精品芒果| 免费观看日韩av| 亚洲欧美日韩网| 亚洲精品美女在线观看| 国产精品久久久久久久久久久久久久| 亚洲在线观看免费视频| 免费看的黄色欧美网站| 亚洲欧美区自拍先锋| 亚洲电影av| 狠狠色狠狠色综合日日91app| 欧美日韩国产一区| 欧美激情欧美狂野欧美精品| 欧美一区亚洲二区| 午夜精品久久久久久久白皮肤| 欧美激情自拍| 亚洲第一福利视频| 老司机免费视频久久| 久久久99久久精品女同性| 中文国产成人精品久久一| 亚洲国产精品黑人久久久| 国产欧美精品一区二区色综合| 欧美日韩中文字幕精品| 欧美手机在线| 国产精品一区二区久激情瑜伽| 欧美午夜精品| 国语自产在线不卡| 在线观看91精品国产入口| 国产自产女人91一区在线观看| 国产精品美女久久久浪潮软件 | 亚洲欧美激情视频| 99国产精品| 性感少妇一区| 性做久久久久久久久| 香蕉久久久久久久av网站| 久久久久国产精品一区| 久久一区国产| 亚洲精品亚洲人成人网| 亚洲欧美激情视频在线观看一区二区三区 | 久久天堂av综合合色| 欧美激情亚洲激情| 亚洲欧美变态国产另类| 久久久久久高潮国产精品视| 麻豆精品网站| 国产日韩一区二区三区在线播放| 尤物yw午夜国产精品视频| 亚洲午夜日本在线观看| 久久久久久有精品国产| 亚洲九九九在线观看| 久久久久久久国产| 国产精品久久久久久久久搜平片| 一区二区三区在线观看欧美| 亚洲视频在线观看| 欧美激情中文字幕在线| 久久精品国内一区二区三区| 欧美日韩一区精品| 亚洲激情综合| 欧美激情1区2区| 免费日韩成人| 91久久精品美女| 亚洲福利av| 欧美精品在线免费| 亚洲九九九在线观看| 亚洲国产精品久久久| 久久久久国产精品一区二区| 国产农村妇女精品一二区| 亚洲欧美日韩一区二区| 亚洲欧美成人网| 悠悠资源网亚洲青| 欧美黄色精品| 欧美性大战久久久久久久| 亚洲欧美日韩在线一区| 一区二区免费在线视频| 欧美色另类天堂2015| 国产精品劲爆视频| 久久er精品视频| 久久一区中文字幕| 亚洲三级网站| 亚洲一卡久久| 亚洲国产精品成人综合| 99热精品在线观看| 国产麻豆午夜三级精品| 欧美电影在线播放| 欧美日韩一视频区二区| 久久久精品日韩| 欧美18av| 久久一本综合频道| 欧美国产日韩亚洲一区| 性久久久久久久久久久久| 老司机精品视频网站| 久久精品日产第一区二区三区| 日韩一级黄色片| 老司机午夜精品视频| 欧美伊人久久久久久午夜久久久久| 久久国产精品久久久久久电车| 亚洲图片欧美午夜| 欧美人与禽猛交乱配视频| 亚洲日本激情| 亚洲欧美高清| 裸体一区二区| 一区二区三区导航| 久久米奇亚洲| 国产精品99久久久久久久vr| 欧美视频一区二区三区…| 亚洲欧洲一区| 一本色道久久综合亚洲精品不| 蜜乳av另类精品一区二区| 久久综合网络一区二区| 国产一区二区电影在线观看| 欧美一区影院| 欧美xart系列在线观看| 在线午夜精品自拍| 国产精品毛片高清在线完整版| 亚洲综合二区| 欧美国产日韩一区二区在线观看 | 久久人人97超碰国产公开结果| 国产日产亚洲精品系列| 欧美www在线| 久久成年人视频| 亚洲小少妇裸体bbw| 一区在线播放视频| 国产精品免费观看在线| 另类激情亚洲| 久久成人精品一区二区三区| 亚洲日本欧美天堂| 久久精品国产综合| 99国产精品自拍| 国产精品大片免费观看| 亚洲午夜精品视频| 亚洲福利视频专区| 欧美中文字幕视频| 亚洲亚洲精品在线观看| 国产日韩在线不卡| 欧美日韩一区二区在线| 日韩视频在线观看| 免费观看成人www动漫视频| 亚洲小视频在线观看| 国产精品ⅴa在线观看h| 久久久亚洲成人| 亚洲九九精品| 中文国产成人精品久久一| 在线视频一区二区| 国产女主播一区| 欧美精品三级日韩久久| 欧美中在线观看| 欧美伊久线香蕉线新在线|