#1233. 2.通讯问题

2.通讯问题

当前没有测试数据。

2.通讯问题

题目描述

机关SERNSERN截获了一条短信。SERNSERN总部必须尽快将这个消息通过地下秘密通讯网络,传达到所有分部。

SERNSERN共有NN个部门(总部编号为00),通讯网络有MM条单向通讯线路,每条线路有一个固定的通讯花费CiC_i。消息的传递只能按照固定的方式进行:从一个已知消息的部门向另一个与它有线路相连的部门传递。我们定义总费用为所有部门传递消息的费用和。

幸运的是,如果两个部门可以直接或间接地相互传递消息(即能按照上述方法将信息由XX传递到YY,同时能由YY传递到XX),我们就可以忽略它们之间的花费。

SERNSERN总部的工程师希望知道,达到目标的最小花费是多少。

输入格式

多组数据,文件以2200结尾。

每组数据第一行,一个整数NN,表示有NN个包括总部的部门(从00开始编号)。然后是一个整数MM,表示有MM条单向通讯线路。

接下来MM行,每行三个整数XiX_i,YiY_i,CiC_i,表示第ii条线路从XiX_i连向YiY_i,花费为CiC_i

输出格式

每组数据一行,一个整数表示达到目标的最小花费。

数据范围与提示

  • 对于10%10\%的数据,保证M=N1M = N - 1
  • 对于另30%30\%的数据,1N201 \leq N \leq 201M201 \leq M \leq 20
  • 对于100%100\%的数据,1N5×1041 \leq N \leq 5 \times 10^{4}1M1051 \leq M \leq 10^{5}1Ci1051 \leq C_i \leq 10^{5}11 \leq数据组数5\leq 5

数据保证一定可以将信息传递到所有部门。

样例

3 3
0 1 100
1 2 50
0 2 100
3 3
0 1 100
1 2 50
2 1 100
2 2
0 1 50
0 1 100
0 0
150
100
50

说明

第一组数据

总部把消息传给分部11,分部11再传给分部22。总费用:100+50=150100 + 50 = 150

第二组数据

总部把消息传给分部11,由于分部11和分部22可以互相传递消息,所以分部11可以无费用把消息传给22。总费用:100+0=100100 + 0 = 100

第三组数据

总部把消息传给分部11,最小费用为5050。总费用:5050