基于m等于1的情况
#include<bits/stdc++.h>
#define UP(i,x,y) for(int i=x; i<=y; i++)
#define LEN 50001
using namespace std;
int n,m;
int maxAns = 0;
vector< pair<int, int> > listMap[LEN]; /* 构建一个二维向量,变量类型是复合的 */
int book[LEN] = {0};
/* 从current开始枚举, 加到的权值存入ansW中 */
int dfs(int current, int ansW)
{
if(ansW > maxAns)
{
maxAns = ansW;
}
for(vector< pair<int, int> >::iterator it = listMap[current].begin(); it != listMap[current].end(); it++)
{
if(book[(*it).first] == 0)
{
book[(*it).first] = 1;
dfs((*it).first, ansW+(*it).second);
book[(*it).first] = 0;
}
}
return 0;
}
int main()
{
int u, v, w;
cin>>n>>m;
UP(i, 1, n-1)
{
cin>>u>>v>>w;
listMap[u].push_back(make_pair(v, w)); /* pair将变量打包存入 */
listMap[v].push_back(make_pair(u, w));
}
/* 枚举所有的点作为起点 */
UP(i, 1, n)
{
book[i] = 1;
dfs(i, 0);
book[i] = 0;
}
cout<<maxAns;
return 0;
}