1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N=100005; 6 int n,m,t,ans; 7 int f1[N],f2[N]; 8 int first[N],v[N],w[N],next[N]; 9 void add(int x,int y,int z) 10 { 11 t++; 12 next[t]=first[x]; 13 first[x]=t; 14 v[t]=y; 15 w[t]=z; 16 } 17 void dp(int x,int father) 18 { 19 int i,j; 20 for(i=first[x];i;i=next[i]) 21 { 22 j=v[i]; 23 if(j==father) 24 continue; 25 dp(j,x); 26 if(f1[x]<f1[j]+w[i]) 27 { 28 f2[x]=f1[x]; 29 f1[x]=f1[j]+w[i]; 30 } 31 else if(f2[x]<f1[j]+w[i]) 32 f2[x]=f1[j]+w[i]; 33 ans=max(ans,f1[x]+f2[x]); 34 } 35 } 36 int main() 37 { 38 int x,y,z,i; 39 scanf("%d%d",&n,&m); 40 for(i=1;i<=m;++i) 41 { 42 scanf("%d%d%d",&x,&y,&z); 43 add(x,y,z); 44 add(y,x,z); 45 } 46 dp(1,0); 47 printf("%d",ans); 48 return 0; 49 }