#687. 谣言传播

谣言传播

【问题描述】

在一个大型组织中,有 n 名成员,成员之间会通过私下交流传播消息。 然而,消息在传播过程中并不会保持完全准确 —— 每一次转述,都会导致消息可信度下降

传播规则说明:

  • 若成员 A 从成员 B 那里听到消息
  • 则消息传到 A 后,其可信度会 乘以一个比例 p(0 < p ≤ 1)
  • 不同成员之间的转述比例可能不同

例如:

  • 若存在一条传播关系 B → A,其可信度比例为 p = 0.9 表示:

    成员 B 的消息传给成员 A 后,可信度会变为原来的 90%


传播特点:

  • 消息可以通过 多名成员间接传播
  • 一条传播路径的总可信度,等于该路径上所有传播比例的 乘积
  • 组织中可能存在 多条不同的传播路径
  • 可以自由选择传播路径

任务要求:

现在,一条消息最初由 1 号成员掌握。 请你计算:

这条消息最终传到 n 号成员时,可能达到的最大可信度是多少?

  • 如果消息 无法从 1 号成员传到 n 号成员,请输出 0.0000

【输入格式】

  • 第 1 行:两个整数 nm
    • n 表示成员数量(1 ≤ n ≤ 100
    • m 表示传播关系数量
  • 接下来 m 行:每行三个数 a b p
    • 表示消息可以从成员 a 传播到成员 b
    • 传播后的可信度会乘以比例 p

【输出格式】

  • 输出一行一个实数
  • 表示从 1 号成员传播到 n 号成员的最大可信度
  • 结果保留 4 位小数

【输入样例】

3 3
1 2 0.9
2 3 0.8
1 3 0.5

【输出样例】

0.7200

【样例说明】

  • 路径 1 → 3 的可信度为 0.5
  • 路径 1 → 2 → 3 的可信度为 0.9 × 0.8 = 0.72
  • 取最大值,结果为 0.7200