#ZS0075. 道理建设

道理建设

数据有误,待修复!

NN 个村庄,编号从 11NN ,你需要修建一些道路,使得每两个村庄都可以相互连接。我们说两个村庄 AABB 是连接的,当且仅当 AABB 之间有一条道路,或者存在一个村庄 CC ,使得 AACC 之间有一条道路,且 CCBB 是连接的。 我们知道已经有一些村庄之间已经存在一些道路,你的任务是修建一些道路,使得所有村庄都连接起来,并且所修建的所有道路的长度之和最小。

输入格式

第一行是一个整数 NN (33 \leq NN \leq 100100) ,表示村庄的数量。接下来是 NN 行,第 ii 行包含 NN 个整数,其中第 jj 个整数表示村庄 ii 和村庄 jj 之间的距离(距离应为一个在 [1,1000][1, 1000] 范围内的整数)。 然后是一个整数 QQ (00 \leq QQ \leq N(N+1)/2N * (N + 1) /2) 。接下来是 QQ 行,每行包含两个整数 aabb (1<=a<b<=N)(1 <= a < b <= N),表示村庄 aa 和村庄 bb 之间已经修建了一条道路。

输出格式

你应该输出一行,包含一个整数,表示修建所有道路使得所有村庄连接起来的最小总长度。

输入样例

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

输出样例

179

提示