void dfs(int u,int fa){
dep[u] = dep[fa]+1;
for(int i = 0;i<=19;i++){
f[u][i+1]=f[f[u][i]][i];//处理一下父节点
for(int i = head[u];i!=0;i=next[i]){
int v = i.nextl
if(v==fa)continue;//很重要
f[v][0]=u;//向上跳2^0==1,就是u
dfs(v,u);
}
}
}
int LCA(int x,int y){
if(dep[x]<dep[y])swap(x,y);
for(int i = 20;i>0;i--){
if(dep[x][i]>dep[y]x=f[x][i];
if(x==y)return x;
}
for(int i = 20;i>=0;i--){
if(f[x][i]!=f[y][i]){//注意这一行
x=f[x][i];
y=f[y][i];
}
}
return f[x][0];
}
科研训练
# 寒假30篇论文计划 - [] 1、SEWResnet - [] 2、Resnet - [] 3、Spikeformer - [] 4、TVConv - [] 5、