#3961. 连接格点(grid)

连接格点(grid)

题目描述

有一个 MMNN 列的点阵,相邻两点可以相连。一条纵向的连线(上下相邻)花费 11 个单位,一条横向的连线(左右相邻)花费 22 个单位。某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通(即整个点阵成为一个连通块)。

输入格式

第一行输入两个正整数 mmnn,表示点阵的行数和列数。

接下来若干行,每行四个正整数 x1,y1,x2,y2x_1, y_1, x_2, y_2,表示第 x1x_1 行第 y1y_1 列的点与第 x2x_2 行第 y2y_2 列的点之间已经有连线。输入保证 x1x2+y1y2=1|x_1 - x_2| + |y_1 - y_2| = 1(即相邻点),且已有连线不会重复给出。输入以文件末尾(EOF)结束。

输出格式

输出一个整数,表示使得所有点连通还需要的最小花费。

样例

2 2
1 1 2 1
3

样例解释
点阵为 2×22 \times 2,已有连线 (1,1)(2,1)(1,1)-(2,1) 是纵向边(花费 11)。还需要连接剩余点,最优方案为:添加横向边 (1,1)(1,2)(1,1)-(1,2) 花费 22,再添加纵向边 (1,2)(2,2)(1,2)-(2,2) 花费 11,总花费 33

数据范围

  • 对于 30%30\% 的数据,n×m1000n \times m \le 1000
  • 对于 100%100\% 的数据,m,n1000m, n \le 1000