#P2421. Constructing Roads

    ID: 1422 传统题 1000ms 256MiB 尝试: 5 已通过: 0 难度: 10 上传者: 标签>树结构生成树最小生成树PKU Monthlykicc

Constructing Roads

题目描述

NN 个村庄,编号为 11NN,你需要修建一些道路,使得任意两个村庄之间都能互相连通。

我们定义两个村庄 AABB 是连通的,当且仅当:

AABB 之间直接有一条道路,或

存在一个村庄 CC,使得 AACC 有道路连接,且 CCBB 连通。

我们已经知道某些村庄之间已经存在道路。你的任务是修建一些新的道路,使得所有村庄都互相连通,同时新建道路的总长度最小。

输入格式

第一行是一个整数 NN3N1003 \leq N \leq 100),表示村庄数。

接下来 NN 行是一个 N×NN \times N 的邻接矩阵,第 ii 行第 jj 列的值表示村庄 ii 和村庄 jj 之间的距离 dijd_{ij},其中 1dij10001 \leq d_{ij} \leq 1000

然后是一个整数 QQ0QN(N+1)20 \leq Q \leq \frac{N(N+1)}{2}),表示已经存在的道路数量。

接下来 QQ 行,每行两个整数 aabb1a<bN1 \leq a < b \leq N),表示村庄 aabb 之间已经修建了道路。

输出格式

输出一个整数,表示新建的道路总长度,使得所有村庄连通且代价最小。

3
0 990 692
990 0 179
692 179 0
1
1 2
179