【学习笔记】虚树

未完成,先扔几个代码。

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int tpos[N],head[N],tot=0,d[N];
struct Edge{int u,v,next;}G[N<<1];
inline void addedge(int u,int v){
    if(u==v)return;
    G[++tot].u=u;G[tot].v=v;G[tot].next=head[u];head[u]=tot;
}
namespace T{

int head[N],cnt=0,tot=0,size[N],fa[N],top[N],wson[N];
struct Edge{int u,v,next;}G[N<<1];
inline void addedge(int u,int v){
    G[++tot].u=u;G[tot].v=v;G[tot].next=head[u];head[u]=tot;
    G[++tot].u=v;G[tot].v=u;G[tot].next=head[v];head[v]=tot;
}
inline void dfs1(int u,int f){
    size[u]=1;
    for(int i=head[u];i;i=G[i].next){
        int v=G[i].v;if(v==f)continue;
        d[v]=d[u]+1;fa[v]=u;
        dfs1(v,u);
        size[u]+=size[v];
        if(size[v]>size[wson[u]])wson[u]=v;
    }
}
inline void dfs2(int u,int tp){
    tpos[u]=++cnt;top[u]=tp;
    if(wson[u])dfs2(wson[u],tp);
    for(int i=head[u];i;i=G[i].next){
        int v=G[i].v;if(v==fa[u]||v==wson[u])continue;
        dfs2(v,v);
    }
}
inline int qlca(int u,int v){
    while(top[u]!=top[v]){
        if(d[top[u]]<d[top[v]])swap(u,v);
        u=fa[top[u]];
    }
    if(d[u]>d[v])swap(u,v);return u;
}

}
inline bool cmp(int x,int y){return tpos[x]<tpos[y];}
int st[N],top=0,vis[N],a[N];
inline void build(){
    int k=read();for(int i=1;i<=k;i++)a[i]=read();
    sort(a+1,a+k+1,cmp);st[++top]=1;
    for(int i=1;i<=k;i++){
        int v=a[i],f=T::qlca(v,st[top]);
        if(f==st[top]){st[++top]=v;continue;}
        while(f==T::qlca(v,st[top-1])){
            addedge(st[top-1],st[top]);top--;f=T::qlca(v,st[top]);
        }
        addedge(f,st[top]);st[top]=f;st[++top]=v;
    }
    while(--top)addedge(st[top],st[top+1]);
}
复制代码

 

posted @   zcysky  阅读(522)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp
点击右上角即可分享
微信分享提示