在一个即将兴建的乐园小镇中,有许多不同主题的区域。每个区域都有自己独特的主题颜色。颜色的编号从 1 到 n(包含两端),其中第 i 种颜色的区域有 a_i 个建筑节点。为了吸引游客,乐园管理方决定将这些节点通过道路相连,并计划选择一些节点之间的连接来构建一个乐园小镇的最小道路网络。每两个建筑节点之间都可以建造一条道路,且每条道路的修建费用只与它两个节点所属的颜色有关。
具体来说,令 c_u 表示建筑节点 u 的主题颜色,如果一条道路连接了节点 u 和节点 v,则它的修建费用为 b_{c_u, c_v},其中 c_u 和 c_v 分别是两个建筑节点的颜色编号。
你需要帮助乐园管理方求出这张乐园小镇的最小道路网络(即最小生成树)的总修建费用。最小生成树是一张带权连通图的边的子集,这
些边连通了所有建筑节点,不会形成环,并且总修建费用最小。
- 第一行输入一个整数 n(表示不同主题颜色的种类数)。
- 第二行输入 n 个整数 a_1, a_2, \ldots, a_n,表示每种颜色的建筑节点数量。
- 接下来 n 行,每行包含 n 个整数 b_{i, j},表示颜色 i 和颜色 j 之间的道路修建费用。
输出一个整数,表示该乐园小镇的最小生成树的总修建费用。
3 100 1 1 1 100 2 100 100 1 2 1 100
102
2 3 3 100 1 1 100
5
1 1 5
0
数据范围与约定
- 对于 20\% 的数据,满足 1 \leq n \leq 10
- 对于 50\% 的数据,满足 1 \leq n \leq 100
- 对于 100\% 的数据,满足:1 \leq n \leq 1000, 1 \leq a_i \leq 10^4, 1 \leq b_{i, j} \leq 10^5