[做题手记·最短路]POJ 3013-Big Christmas Tree

本文介绍了一个无向图问题,目标是构建一棵以1为根结点的树,并使其总价值最小。文章详细解释了如何通过计算各点到根节点1的最短路径,结合点权值来确定树的总价值,同时提供了示例输入输出帮助理解。

题目描述

一个无向图 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开大一点!

转载于:https://www.cnblogs.com/alice593/p/9145446.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值