有负边权,所以用树形DP来找树的直径. 1 //树形DP求树的直径 2 #include<bits/stdc++.h> 3 using namespace std; 4 const int N=500005,M=500005; 5 int n,m,tot,ans; 6 int f1[N],f2[N];//以u为根的子树的最大值和次大值 7 int head[N],to[M*2],w[M*2],nxt[M*2]; 8 9 void add(int x,int y,int z){ 10 nxt[+…