#include <bits/stdc++.h>
using namespace std ;
#define int long long
struct node
{
int d , b ;
};
int n , maxx ;
bool vis[200005] ;
vector <node> v[200005] ;
bool cmp( node a , node b )
{
return a.b > b.b ;
}
void dfs( int x , int step , int sum )
{
if( vis[x] ) return ;
maxx = max( maxx , sum ) ;
vis[x] = 1 ;
if( step == 4 )
{
vis[x] = 0 ;
return ;
}
for( int i = 0 ; i < v[x].size() ; i ++ )
{
dfs(v[x][i].d , step + 1 , sum + v[x][i].b );
}
vis[x] = 0 ;
}
signed main()
{
cin >> n ;
for( int i = 1 ; i < n ; i ++ )
{
int x , y ;
cin >> x >> y ;
node xy ;
xy.b = y ;
xy.d = x ;
v[i + 1].push_back(xy) ;
xy.d = i + 1 ;
v[x].push_back(xy) ;
}
for( int i = 1 ; i <= n ; i ++ )
{
if( v[i].size() >= 3 )
{
sort( v[i].begin() , v[i].end() , cmp ) ;
maxx = max( maxx , v[i][0].b + v[i][1].b + v[i][2].b ) ;
continue ;
}
dfs(i , 1 , 0 ) ;
}
cout << maxx ;
return 0 ;
}
- 测试点6:Wrong Answer.wrong answer On line 1 column 3, read 4, expected 7.
- 测试点15:Wrong Answer.wrong answer On line 1 column 3, read 8, expected 9.