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

算法學社
記錄難忘的征途
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>
            这里只有精品视频| 国产精品永久免费观看| 99国产精品久久久久久久久久 | 9久草视频在线视频精品| 久久综合给合| 久久精品一区二区国产| 欧美中文字幕视频在线观看| 亚洲免费视频成人| 亚洲一区二区三区高清不卡| 正在播放亚洲| 午夜精品视频一区| 欧美在线三级| 久久婷婷国产综合精品青草| 久久中文字幕一区| 欧美国产综合视频| 亚洲区第一页| 亚洲精品一区二区三区不| 亚洲国产日韩综合一区| 亚洲精品看片| 午夜精品剧场| 蜜桃av一区二区三区| 欧美成人激情视频| 欧美视频一区二区三区…| 国产精品电影在线观看| 国产一区二区精品在线观看| 在线观看91精品国产入口| 亚洲欧洲免费视频| 亚洲欧美日韩一区二区| 久久综合精品国产一区二区三区| 久久久国产亚洲精品| 一区二区三区日韩在线观看 | 欧美一区二区视频在线观看2020| 国产一区二区成人久久免费影院| 国产免费成人| 激情视频亚洲| 亚洲理论在线| 欧美亚洲综合在线| 欧美激情一区二区三区成人| 一区二区三区高清视频在线观看| 亚洲欧美日韩人成在线播放| 久久久久九九九| 欧美性猛交xxxx乱大交退制版| 国产精品久久久久免费a∨| 国产综合精品一区| 一区二区欧美日韩| 久久久久久999| 亚洲免费观看| 久久免费视频网| 欧美视频中文字幕在线| 一区精品在线播放| 亚洲欧美日韩在线一区| 欧美国产极速在线| 欧美一区二区三区精品| 欧美连裤袜在线视频| 国产一区二区三区视频在线观看| 亚洲人成77777在线观看网| 亚洲先锋成人| 亚洲大胆av| 性欧美办公室18xxxxhd| 欧美日韩亚洲一区三区| 亚洲国产精品一区制服丝袜| 欧美一区二区三区四区夜夜大片| 欧美激情第三页| 性欧美大战久久久久久久免费观看| 久久免费精品日本久久中文字幕| 欧美色图天堂网| 亚洲国产清纯| 免费不卡在线观看av| 亚洲欧美日韩专区| 国产精品啊啊啊| 一区二区三区欧美激情| 亚洲国产一区二区a毛片| 久久蜜桃香蕉精品一区二区三区| 欧美日韩亚洲国产精品| 日韩午夜剧场| 亚洲国产欧美一区二区三区久久| 欧美一级黄色网| 国产日韩成人精品| 久久成人综合视频| 午夜精品久久久久久久男人的天堂 | 欧美一区二区日韩一区二区| 亚洲私人影院在线观看| 欧美大片免费观看| 国内精品久久国产| 欧美在线三区| 新67194成人永久网站| 国产精品一区一区三区| 先锋a资源在线看亚洲| 一区二区三区福利| 国产精品久久久久aaaa樱花| 午夜精品美女自拍福到在线| 亚洲欧美成人一区二区三区| 国产精品白丝黑袜喷水久久久| 亚洲黄色毛片| 亚洲国产毛片完整版| 国产精品毛片a∨一区二区三区|国 | 一本一道久久综合狠狠老精东影业| 亚洲第一色中文字幕| 欧美不卡高清| 久久综合色一综合色88| 最新亚洲激情| 欧美日韩aaaaa| 性久久久久久久久| 久久精品国产69国产精品亚洲| 国产精品成人国产乱一区| 欧美一区视频| 久久综合国产精品| 日韩一区二区电影网| 亚洲视频一区在线| 国产精品免费一区二区三区观看| 午夜精品久久久久| 久久蜜桃资源一区二区老牛| av成人免费| 亚洲一区网站| 亚洲高清视频的网址| 亚洲精品一区二区三区樱花| 国产一区二区三区自拍| 亚洲国产欧美一区二区三区丁香婷| 欧美日本久久| 久久视频在线免费观看| 欧美日本高清一区| 欧美一二区视频| 欧美a级理论片| 亚洲欧美日韩国产中文| 久久久九九九九| 亚洲精品日韩综合观看成人91| 亚洲精品四区| 欧美理论电影网| 久久九九久精品国产免费直播| 性做久久久久久免费观看欧美| 在线免费观看日本欧美| 亚洲婷婷综合久久一本伊一区| 激情综合色综合久久综合| aaa亚洲精品一二三区| 国产午夜精品一区二区三区视频| 欧美成人精品不卡视频在线观看 | 久久久成人精品| 欧美一区二区播放| 一本大道久久a久久精品综合| 欧美在线视频网站| 99在线精品观看| 欧美综合国产精品久久丁香| 欧美亚韩一区| 红桃视频欧美| 欧美国产欧美综合| 欧美成人一区二区| 亚洲欧美成人在线| 六月婷婷一区| 亚洲国产高清在线| 国产精品久久网| 亚洲国产精品久久久久婷婷老年| 欧美日韩中文在线观看| 欧美高清视频一二三区| 精品不卡一区二区三区| 欧美一进一出视频| 亚洲男女自偷自拍图片另类| 欧美华人在线视频| 欧美 日韩 国产在线| 国产一区二区三区观看| 亚洲一级在线| 午夜在线观看免费一区| 国产精品久久久久久久久果冻传媒 | 久久一区国产| 久久综合九色九九| 国产主播一区二区三区四区| 亚洲综合色丁香婷婷六月图片| 亚洲天堂网站在线观看视频| 欧美激情一区二区三区四区 | 国产日韩欧美电影在线观看| 一区二区三区 在线观看视频| 日韩午夜精品| 欧美电影在线播放| 亚洲精品一线二线三线无人区| 亚洲国产经典视频| 欧美精品一卡二卡| 日韩午夜在线电影| 性做久久久久久久免费看| 国产精品丝袜91| 亚洲视频在线观看视频| 亚洲激情啪啪| 日韩亚洲一区二区| 欧美日韩精品一区二区| 亚洲免费成人| 亚洲影视九九影院在线观看| 欧美午夜在线观看| 亚洲综合视频一区| 久久久久综合| 影音先锋一区| 欧美区日韩区| 亚洲一区尤物| 免费观看30秒视频久久| aa成人免费视频| 久久精品亚洲国产奇米99| 亚洲男人的天堂在线观看| 夜夜爽夜夜爽精品视频| 一区二区三区免费观看| 欧美国产乱视频| 狂野欧美激情性xxxx| 欧美一区二区成人6969| 国产精品视频自拍|