#cFYSlydlt60x6501. 观光奶牛 Sightseeing Cows

观光奶牛 Sightseeing Cows

好的,这是整理好的题面,不含解题思路,只包含样例解释。


题目描述

给定一张 LL 个点、PP 条边的有向图
每个点有一个权值 f[i]f[i],每条边有一个权值 t[i]t[i]

求图中的一个环,使得“环上各点的权值之和”除以“环上各边的权值之和”最大
输出这个最大值,保留两位小数。

数据保证至少存在一个环。


输入格式

第一行两个整数 LLPP
接下来 LL 行,每行一个整数 f[i]f[i],表示第 ii 个点的权值。
再接下来 PP 行,每行三个整数 a,b,t[i]a, b, t[i],表示从点 aa 到点 bb 有一条有向边,权值为 t[i]t[i]

输出格式

输出一个实数,表示最大值,保留两位小数。

数据范围

  • 2L10002 \le L \le 1000
  • 2P50002 \le P \le 5000
  • 1f[i],t[i]10001 \le f[i], t[i] \le 1000

输入样例

5 7
30
10
10
5
10
1 2 3
2 3 2
3 4 5
3 5 2
4 5 5
5 1 3
5 2 2

输出样例

6.00

样例解释

L=5L=5,点权: 1: 30
2: 10
3: 10
4: 5
5: 10

P=7P=7,有向边(起点→终点,边权): 1→2: 3
2→3: 2
3→4: 5
3→5: 2
4→5: 5
5→1: 3
5→2: 2


寻找最大比值的环

目标是最大化 f[i]t[i]\dfrac{\sum f[i]}{\sum t[i]},其中 ii 取环上的点,边取环上的边。

环 5→1→2→3→5

  • 点:5,1,2,3,点权和 = 10+30+10+10 = 60
  • 边:5→1(3), 1→2(3), 2→3(2), 3→5(2),边权和 = 3+3+2+2 = 10
    比值 = 60/10 = 6.00

环 5→2→3→5

  • 点:5,2,3,点权和 = 10+10+10 = 30
  • 边:5→2(2), 2→3(2), 3→5(2),边权和 = 2+2+2 = 6
    比值 = 30/6 = 5.00

环 1→2→3→5→1

  • 点:1,2,3,5,点权和 = 30+10+10+10 = 60
  • 边:1→2(3), 2→3(2), 3→5(2), 5→1(3),边权和 = 3+2+2+3 = 10
    比值 = 60/10 = 6.00

环 2→3→5→2

  • 点:2,3,5,点权和 = 10+10+10 = 30
  • 边:2→3(2), 3→5(2), 5→2(2),边权和 = 2+2+2 = 6
    比值 = 30/6 = 5.00

可见最大比值是 6.00。


输出 6.00