【学习笔记】虚树
未完成,先扔几个代码。
#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]); }
zzq wc-ctsc-apio-NOI Au;yql精通多项式;zyz精通女装;由乃精通数据结构;孔老师是毒奶大师;我没有学上:我们都有光明的前途。
分类:
others
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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