题目大意

给你一棵树,让你添加一些边,使原树是严格次小生成树,要求添加的边的边权最小


解题思路

要让原树是次小生成树,那么就要构造一棵最小生成树,又因为要边权最小,那么找一条比边权大于1的边,在两个端点之间连一条边权为1的边即可(要保证更小)

如果没有边权大于1的,那就是无解


code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
ll n,x,y,z,p,sum;
int main()
{
	scanf("%lld",&n);
	for(ll i=1;i<n;++i){
		scanf("%lld%lld%lld",&x,&y,&z);
		if(z>1)p=1;
		sum+=z;
	}
	if(!p)puts("-1");
	else printf("%lld",sum+1);
	return 0;
}