巡逻
Submit solution
Points:
99
Time limit:
1.0s
Memory limit:
80M
Author:
Problem type
Allowed languages
C, C++
巡逻
题目描述
在边境森林中,分布着若干个重要的哨站,所有的哨站之间通过隐秘小径相连,构成了一个天然的巡逻网络。这张网络的结构恰好形成了一棵树。为了防止敌人渗透,小蓝每天需要执行固定长度为\(k\)的巡逻任务。
每次巡逻从一个哨站出发,经过不重复地恰好\(k\)条道路,最终到达另一个哨站。每条道路都有一定的危险值,巡逻路径上所有道路的危险值的总和代表该次巡逻的风险。两条巡逻路径不同当且仅当它们的起点或终点不同。
现在,指挥官希望知道,所有可能的长度为\(k\)的巡逻路线的风险之和是多少。
输入格式
- 第一行包含两个正整数\(n\)和\(k\),分别表示树的节点数和巡逻的道路数。
- 接下来\(n-1\)行,每行包含三个整数\(u_i, v_i, w_i\),表示节点\(u_i\)和节点\(v_i\)之间有一条危险值为\(w_i\)的边。
输出格式
输出一行包含一个整数,表示所有可能长度为\(k\)的巡逻路径的风险之和。
输入输出样例
输入样例 #1
7 2
1 2 3
2 4 5
1 3 7
3 5 3
3 6 4
6 7 2
输出样例 #1
104
说明
样例解释:
所有可能的路径及其风险值如下:
-\(1 \rightarrow 2 \rightarrow 4:\)风险值\(=3 + 5 = 8 -\)2 \rightarrow 1 \rightarrow 3:\(风险值\)=3 + 7 = 10 -\(1 \rightarrow 3 \rightarrow 5:\)风险值\(=7 + 3 = 10 -\)1 \rightarrow 3 \rightarrow 6:\(风险值\)=7 + 4 = 11 -\(5 \rightarrow 3 \rightarrow 6:\)风险值\(=3 + 4 = 7 -\)3 \rightarrow 6 \rightarrow 7:\(风险值\)=4 + 2 = 6
以上路径反过来也是合法的,所以总共有14条不同的路径,风险之和为104。
数据范围与约定
| 测试点编号 | 特殊限制 |
|---|---|
| 1 \sim 2 | n = 3 |
| 3 \sim 4 | n = 5 |
| 5 \sim 6 | n = 100 |
| 7 \sim 8 | n = 1000 |
| 9 \sim 10 | u_i = 1, v_i = i + 1 |
| 11 \sim 12 | u_i = i, v_i = i + 1 |
| 13 \sim 20 | 无特殊限制 |
对于所有数据,1 \leq n \leq 10^5,1 \leq k \leq n,1 \leq u_i, v_i \leq n,1 \leq w_i \leq 10^6。
Comments