题目描述:
解法一:
用邻接矩阵存储各地点的状态,然后dfs求出结果
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
bool vis[10010];
int w[10010][10010];
int n;
int sum = 0,MAX = 0;
void dfs(int s){
for(int i=1;i<=n;i++){
if(!vis[i]&&w[s][i]>0){
vis[i] = true;
sum+=w[s][i];
dfs(i);
vis[i] = false;
sum-=w[s][i];
}
}
if(sum>MAX){
MAX=sum;
}
}
int main(){
cin>>n;
for(int i = 1;i<=n-1;i++){
int a,b,c;
cin>>a>>b>>c;
w[a][b] = c;
w[b][a] = c;
}
for(int i=1;i<=n;i++){
vis[i] = true;
dfs(i);
vis[i] = false;
}
cout<<MAX*10+(MAX+1)*MAX/2;
return 0;
}