using namespace std;
typedef struct Node
{
int elem;
int length;
Node(int e=0,int l=0):elem(e),length(l){}
}node;
vector<node> g[100005];
long long int total[100005],dist[100005];
int f[100005];
long long int maxi;
void search(int n)
{
if(g[n].size()==1)
{
maxi=max(maxi,dist[n]);
return;
}
for(int i=0;i<g[n].size();i++)
{
node r=g[n][i];
if(r.elem==f[n]) continue;
f[r.elem]=n;
dist[r.elem]=dist[n]+r.length;
search(r.elem);
total[n]+=total[r.elem]+2*r.length;
}
}
int main()
{
int n,s,i1;
int name1,name2,len;
cin>>n>>s;
for(i1=0;i1<n-1;i1++)
{
cin>>name1>>name2>>len;
g[name1].push_back(Node(name2,len));
g[name2].push_back(Node(name1,len));
}
search(s);
cout<<total[s]-maxi;
return 0;
}
tree mode ver 2
最新推荐文章于 2025-04-13 21:58:14 发布