求调MLE
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
int n,m,kk=0;
ll dis[N],ans=0;
int vis[N],fa[N],id[N];
vector<pair<int,int>> g[N];
void dfs1(int u,int f){
if(dis[u]>dis[kk]) kk=u;
for(auto [v,w]:g[u]){
if(v==f) continue;
dis[v]=dis[u]+w;
dfs1(v,u);
}
}
void dfs2(int u,int f){
if(dis[u]>dis[kk]) kk=u;
for(auto [v,w]:g[u]){
if(v==f) continue;
fa[v]=u;
dis[v]=dis[u]+w;
dfs2(v,u);
}
}
void dfs(int u,int f,int fac){
id[u]=fac;
for(auto [v,w]:g[u]){
if(v==f||vis[v]) continue;
dfs(v,w,fac);
}
}
void vvvvt()
{
cin>>n>>m;
for(int i=1;i<n;i++){
int u,v,w;
cin>>u>>v>>w;
g[u].push_back({v,w});
g[v].push_back({u,w});
}
dfs1(1,0);
dis[kk]=0;
dfs2(kk,0);
for(int i=kk;i;i=fa[i]){
vis[i]=1;
}
for(int i=kk;i;i=fa[i]){
dfs(i,0,i);
}
for(int i=1;i<=n;i++){
// if(vis[i]==1) continue;
ans=max(ans,dis[kk]+min(dis[kk]-dis[id[i]],dis[id[i]])+dis[i]-dis[id[i]]);
}
cout<<ans<<'\n';
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int _=1;
// cin>>_;
while(_--) vvvvt();
return 0;
}