第一份过不了,第二份过了。
de[1]=1;
void dfs(int u,int fath){
/*if(u!=1){
w[u][0]=e[u][fath].w,
de[u]=de[fath]+1,
f[u][0]=fath;
for(re int i=1;f[u][i-1];i++)
f[u][i]=f[f[u][i-1]][i-1],
w[u][i]=max(w[u][i-1],w[f[u][i-1]][i-1]);
}*/
for(auto i:e[u])
if(i.v!=fath){
w[i.v][0]=i.w,
de[i.v]=de[u]+1,
f[i.v][0]=u;
for(re int j=1;f[i.v][j-1];j++)
f[i.v][j]=f[f[i.v][j-1]][j-1],
w[i.v][j]=max(w[i.v][j-1],w[f[i.v][j-1]][j-1]);
dfs(i.v,u);
}
}
de[1]=1;
void dfs(int u,int fath){
if(u!=1){
w[u][0]=e[u][fath].w,
de[u]=de[fath]+1,
f[u][0]=fath;
for(re int i=1;f[u][i-1];i++)
f[u][i]=f[f[u][i-1]][i-1],
w[u][i]=max(w[u][i-1],w[f[u][i-1]][i-1]);
}
for(auto i:e[u])
if(i.v!=fath){
/*w[i.v][0]=i.w,
de[i.v]=de[u]+1,
f[i.v][0]=u;
for(re int j=1;f[i.v][j-1];j++)
f[i.v][j]=f[f[i.v][j-1]][j-1],
w[i.v][j]=max(w[i.v][j-1],w[f[i.v][j-1]][j-1]);*/
dfs(i.v,u);
}
}