/ Vijos / 题库 /

道路修建

道路修建

时间限制:1秒  内存限制:256M


【问题描述】

  FJ 的牧场由 \(N\) 块草地组成,编号为 \(1..N\)。在这些草地之间有 \(M\) 条双向道路,每条道路连接两块草地。

  牧场里有两个牛棚,一个在草地 1 中,另一个在草地 \(N\) 中。FJ 希望至少有一条能在两个牛棚之间行走路径(即草地1和N之间能连通)。但是最初给出的 \(M\) 条双向道路无法保证 \(1\) 和 \(N\) 能相互到达,因此FJ想再建造至多两条新的双向道路来实现这一目标。由于草地的位置因素,若在草地 \(a\) 和 \(b\) 之间建造新道路,需要的花费是 \((a−b)^2\)。

  请帮助 FJ 求出使得牛棚 1和 \(N\) 可以相互到达所需要的最小花费。

【输入格式】

  输入的第一行包含 \(T(1≤T≤20)\),之后是 \(T\) 组数据。
  每组数据的第一行包含两个整数 \(N\) 和 \(M\)。以下 \(M\) 行,每行包含两个整数 \(u\) 和 \(v\),表示一条连接两个不同草地 \(u\) 和 \(v\) 的双向道路。输入保证任何两个草地之间至多只有一条道路,并且所有子测试用例的 \(N+M\) 之和不超过500000。

【输出格式】

  输出 \(T\) 行。第 \(i\) 行包含一个整数,为第 \(i\) 组数据的最小花费。

【输入输出样例】

 Input

2
5 2
1 2
4 5
5 3
1 2
2 3
4 5

 Output

2
1

【样例说明】

  第一组数据中,最优的方式是:在草地 2 和 3之间修一条路,在草地 3 和 4之间修一条路,总花费为(2-3)2 + (3-4)2 = 2。
  第二组数据中,最优的方式是:在草地 3 和 4之间修一条路,不需要第二条道路,花费为 (3-4)2 = 1。

【数据说明】

  测试点 2 满足 \(N≤20\)。
  测试点 3-5 满足 \(N≤10^3\)。
  测试点 6-10 满足 \(N,M≤10^5\)。

【来源】

  Mr.he

信息

ID
2534
难度
(无)
分类
图结构 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
被复制
1
上传者