#agc045e. [agc045_e]Fragile Balls

[agc045_e]Fragile Balls

题目描述

我们有 NN 个编号为 11NN 的盒子,和 MM 个编号为 11MM 的球。初始时,球 ii 放在盒子 AiA_i 中。

你可以进行以下操作:

  • 选择一个包含两个或更多个球的盒子,从中取出一个球,并将其放入另一个盒子中。

由于球很容易损坏,你不能让球 ii 移动超过 CiC_i 次。在这个限制下,你可以进行任意次数的操作。

你的目标是让所有球 ii1leqileqM1 \\leq i \\leq M)都放在盒子 BiB_i 中。判断是否能够实现这个目标。如果能够实现,还需找到实现它所需的最小操作次数。

约束条件

  • 1leqNleq1051 \\leq N \\leq 10^5
  • 1leqMleq1051 \\leq M \\leq 10^5
  • 1leqAi,BileqN1 \\leq A_i,B_i \\leq N
  • 1leqCileq1051 \\leq C_i \\leq 10^5
  • 在目标实现的情况下,每个盒子都至少包含一个球。也就是说,对于每个 ii1leqileqN1 \\leq i \\leq N),存在 jj,使得 Bj=iB_j=i

输入

输入以标准输入格式给出,格式如下所示:

NN MM A1A_1 B1B_1 C1C_1 A2A_2 B2B_2 C2C_2 vdots\\vdots AMA_M BMB_M CMC_M

输出

如果无法实现目标,则输出 1-1;如果能够实现目标,则输出实现它所需的最小操作次数。


示例输入 1

3 3
1 2 1
2 1 1
1 3 2

示例输出 1

3

我们可以用以下三个操作实现目标:

  • 从盒子 11 中取出球 11 并放入盒子 22
  • 从盒子 22 中取出球 22 并放入盒子 11
  • 从盒子 11 中取出球 33 并放入盒子 33

示例输入 2

2 2
1 2 1
2 1 1

示例输出 2

-1

示例输入 3

5 5
1 2 1
2 1 1
1 3 2
4 5 1
5 4 1

示例输出 3

6

示例输入 4

1 1
1 1 1

示例输出 4

0