想问为什么
实在找不出问题
但是全RE
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct edge{int v,w,nxt;}e[200000];
int n,k,head[5050],dis[5050],ans,cnt;
int fa[5050],dep[5050],siz[5050],son[5050],top[5050];
void add(int u,int v,int w)
{
e[++cnt].nxt=head[u];
e[cnt].v=v;
e[cnt].w=w;
head[u]=cnt;
}
int dfs1(int p)
{
siz[p]=1;
for(int i=head[p];i;i=e[i].nxt)
{
int v=e[i].v,w=e[i].w;
if(v!=fa[p])
{
fa[v]=p;
dep[v]=dep[p]+1;
dis[v]=dis[p]+w;
dfs1(v);
siz[p]+=siz[v];
if(son[p]==0||siz[son[p]]<siz[v]) son[p]=v;
}
}
}
void dfs2(int p,int hd)
{
top[p]=hd;
if(son[p]==0) return;
dfs2(son[p],hd);
for(int i=head[p];i;i=e[i].nxt)
{
int v=e[i].v;
if(v!=fa[p]&&v!=son[p]) dfs2(v,v);
}
}
int lca(int x,int y)
{
while(top[x]!=top[y])
{
if(dep[top[x]]>dep[top[y]]) x=fa[top[x]];
else y=fa[top[y]];
}
if(dep[x]>dep[y]) return y;
return x;
}
signed main()
{
cin.tie(0)->sync_with_stdio(0);
cin>>n>>k;
for(int i=1,u,v,w;i<n;i++) cin>>u>>v>>w,add(u,v,w),add(v,u,w);
dfs1(1);
dfs2(1,1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
int orz=lca(i,j);
if(dep[i]+dep[j]-2*dep[orz]!=k) continue;
ans+=dis[i]+dis[j]-2*dis[orz];
}
}
cout<<ans;
}