zoukankan      html  css  js  c++  java
  • [jzyzoj2021]lca模板题

    查找最近公共祖先...我也不知道这东西有什么用,在线写法,非常之慢....

    存代码
     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 using namespace std;
     7 int n,m;
     8 struct nod{
     9     int y;
    10     int next;
    11 }e[200020];
    12 int head[100010]={};
    13 int dep[100010]={};
    14 int size[100010]={};
    15 int son[100010]={};
    16 int top[100010]={};
    17 int f[100010]={};
    18 int tot=0;
    19 void init(int x,int y){
    20     e[++tot].next=head[x];
    21     head[x]=tot;
    22     e[tot].y=y;
    23 }
    24 void dfs1(int x){
    25     dep[x]=dep[f[x]]+1;
    26     size[x]=1;
    27     for(int i=head[x];i;i=e[i].next){
    28         if(e[i].y!=f[x]&&!f[e[i].y]){
    29             f[e[i].y]=x;
    30             dfs1(e[i].y);
    31             size[x]+=size[e[i].y];
    32             if(size[son[x]]<size[e[i].y]) son[x]=e[i].y;
    33         }
    34     }
    35 }
    36 void dfs2(int x){
    37     if(x==son[f[x]])top[x]=top[f[x]];
    38     else top[x]=x;
    39     for(int i=head[x];i;i=e[i].next){
    40         if(f[e[i].y]==x) dfs2(e[i].y);
    41     }
    42 }
    43 int ask(int x,int y){
    44     while(top[x]!=top[y]){
    45         if(dep[top[x]]>dep[top[y]]) x=f[top[x]];
    46         else y=f[top[y]];
    47     }
    48     if(dep[x]<dep[y]) return x;
    49     else return y;
    50 }
    51 int main(){
    52     scanf("%d%d",&n,&m);
    53     int x,y;
    54     for(int i=1;i<n;i++){
    55         scanf("%d%d",&x,&y);
    56         init(x,y);
    57         init(y,x);
    58     }
    59     dfs1(1);
    60     dfs2(1);
    61     for(int i=1;i<=m;i++){
    62         scanf("%d%d",&x,&y);
    63         printf("%d
    ",ask(x,y));
    64     }
    65     return 0;
    66 }
    View Code
  • 相关阅读:
    如何下载文件
    线程方法wait()和notify()的使用
    多线程的同步问题
    线程
    线程上下文类加载器(Context ClassLoader)
    自定义ClassLoader的使用
    类加载器及其双亲委托机制
    类加载机制导致静态变量出错问题
    JAVA JVM助记符
    JVM调试说明
  • 原文地址:https://www.cnblogs.com/137shoebills/p/7783812.html
Copyright © 2011-2022 走看看