loj#P3581. 「CCO 2021」面包优先搜索
「CCO 2021」面包优先搜索
题目描述
有一个由 个城镇和 条无向道路形成的路网。每条路连接一对城镇。政府决定进行一次宽度优先搜索(breadth first search),这意味着找到 个城镇的一个顺序,如果这个排序以 开始,满足:
- 除了 之外,每个城镇都与排在它之前的某个城镇相邻。
- 城镇按到 的距离单调不降的顺序给出。这里,距离是指到一个城镇所最少要经过的道路条数。
然而,某个人错误地进行了一次面包(bread)优先搜索。他们找到的排序是 (这个排序是通过按面包产量递增的顺序对城镇排序得到的)。
为了掩饰这个尴尬,政府想要修建一些新的道路,使得 也是一个可能的宽度优先搜索排序。新的道路可以在任意两个城市之间新建。请问最少要修建多少条道路?
输入格式
第一行包含两个整数 和 。
接下来 行,第 行包含两个整数 和 ,表示第 条路的两端。保证 ,并且任意两个城镇之间最多只有一条路。
输出格式
输出一行一个整数,表示最少要修建多少条道路。
2 0
1
6 3
1 3
2 6
4 5
2
数据范围与提示
对于全部数据,$1\le N\le 2\times 10^5,0\le M\le \min(2\times 10^5,\frac{N(N-1)}{2}),1\le a_i,b_i\le N$。
对于 的分数,。
对于另外 的分数,。