题目描述
一个无向图 v, e (0 ≤ v, e ≤ 50000)分别代表点数和边数,每个边和每个点都有权值。求一个以1为根结点的树,使树的价值最小
树的价值=所有边的价值和
边的价值=边的权值*该边所连子树中的点权和
若不能构成一棵树,输出No Answer
Sample Input
2
2 1
1 1
1 2 15
7 7
200 10 20 30 40 50 60
1 2 1
2 3 3
2 4 2
3 5 4
3 7 2
3 6 3
1 5 9
Sample Output
15
1210
突破点
我们发现一个点的权值会被计算多次,这个次数即为从这个点到根节点路径上所有的边权和
所以我们先找出所有点到1的最短路,然后在用它乘上点权累加即可
不能构成一棵树即存在点的最短路为INF(不可达到根节点)
在思考累加累乘问题时学会化大为小,找出计算过程中的不变量,找最值时我们排除掉不变量即可找到影响最值的因素,然后加以转化,是不是感觉豁然开朗了呢?
坑点
所有输出数据<2e16,记得开long long
注意v==0时无法Dijkstra,以及v==1时结果均为0
INF开大一点!