我的求树的直径出现了问题,蒟蒻求调!
#include <iostream>
#include <vector>
using namespace std;
const int size=10010;
int n,f[2][size],ans;
vector<pair<int,int>> edgs[size];
void dfs(int fa,int u){
f[0][u]=f[1][u]=0; //longest and second-longest
for(auto edg:edgs[u]){
int v=edg.first;
if(v!=fa) dfs(u,v);
}
for(auto edg:edgs[u]){
int v=edg.first,w=edg.second;
if(f[0][v]+w>f[0][u]) f[1][u]=f[0][u],f[0][u]=f[0][v]+w;
else if(f[0][v]+w>f[1][u]) f[1][u]=f[0][v]+w;
}
ans=max(ans,f[0][u]+f[1][u]);
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
int u,v,w;
cin>>u>>v>>w;
edgs[u].push_back(make_pair(v,w));
edgs[v].push_back(make_pair(u,w));
}
dfs(0,1);
cout<<ans<<endl;
return 0;
}