3761 - 星星点灯
描述

A 市迎来了当地的传统节日——一年一度的观星节。

主办方请来了著名绘画大师大 D 画下了当晚天上的 n 颗星星,参与者可以花费 m 点星光能量为任意一颗星星点一盏灯。

除此之外,主办方还制作了一个 n \times n 的表格,表格中第 i 行第 j 列的数字 F_{i,j} 表示如果目前第 i 颗星星是亮的,那么可以花费 F_{i,j} 点星光能量为第 j 颗星星点亮一盏灯。特别地,对于任何 a, b,F_{a,b} 总是等于 F_{b,a}。

大 D 看着这些灯,心里盘算着最少花费多少星光能量能够为所有的星星点一盏灯。

输入

第一行两个整数 m, n,含义如题所示。

接下来 n 行,每行 n 个整数,第 i 行第 j 个整数表示 F_{i,j}。

输出

一行一个整数,输出点亮所有灯所需最少的星光能量。

样例

输入

5 3
3 2 3
2 4 1
3 1 4

输出

8

输入

10 5
6 2 3 5 2
2 4 1 5 7
3 1 3 4 3
5 5 4 3 6
2 7 3 6 4

输出

19
提示

样例 1 解释

先支付 5 点星光能量点亮第二颗星星的灯,然后通过 F_{2,1} 和 F_{2,3} 点亮第一颗和第三颗星星的灯,总共花费了 m + F_{2,1} + F_{2,3} = 5 + 2 + 1 = 8 点星光能量。

数据范围

  • 1 \sim 2 号测试点:n \le 4;
  • 3 \sim 6 号测试点:n \le 100;
  • 7 \sim 10 号测试点:n \le 1000。

对于 100\% 的数据,1 \le m, F_{a,b} \le 1000。

提示

把「花 m 点能量直接点亮某颗星」看成从一个虚拟的超级源点向这颗星连一条权为 m 的边,把 F_{i,j} 看成星星 i 与 j 之间的一条边,那么「点亮所有星星且总花费最小」就是这张图上的最小生成树。

用 Prim 算法实现是 O(n^2),用 Kruskal 算法是 O(n^2 \log n),两种都足以通过 n \le 1000 的数据。

来源
2024梦熊CSP-J20连测 普及模拟赛16
标签
题目参数
时间限制 1 秒
内存限制 256 MB
提交次数 1
通过次数 1