#P15563. [Nsi2025十年级]LATINAS拉丁姑娘

[Nsi2025十年级]LATINAS拉丁姑娘

题目描述

Kyusho 和 Urosh 踏上了前往玻利维亚寻找拉丁姑娘的旅程。虽然他们去玻利维亚旅行这件事本身已经足够写成一篇 Codeforces 博客,但他们并不知道接下来会遇到什么。事实证明,除了巨大的海拔落差、长达 12 小时的路线以及著名的由巴拉圭囚犯修建的 “Death road” 之外,玻利维亚的公路网络连接得相当稀疏。

我们可以把玻利维亚的地图表示为 NN 个城市,以及连接这些城市的 MM 条无向道路。每条道路连接两个不同的城市,并且任意两个城市之间最多只有一条道路。如果任意两个城市之间都能通过若干条道路相互到达,则称这些城市构成一个连通网络。令人惊讶的是,玻利维亚的道路网络是连通的。

Kyusho 和 Urosh 不希望任何意外情况(例如雪崩或集会)阻碍他们的任务,因此他们想知道有多少条道路 (ai,bi)(a_i,b_i) 满足下面的性质:

如果封锁城市 aia_ibib_i,并移除所有与这两个城市相连的道路,那么剩下的 N2N-2 个城市将不再构成连通网络。

请你编写程序 latinas,根据给定的道路网络求出这样的道路条数。

输入格式

第一行输入两个整数 NNMM,分别表示城市数量和道路数量。

接下来 MM 行,每行输入两个整数 ai,bia_i,b_i,表示城市 aia_i 和城市 bib_i 之间有一条无向道路。

输出格式

输出一行一个整数,表示满足条件的道路数量。

数据范围

  • 4N1000004 \le N \le 100000
  • 3M3000003 \le M \le 300000
  • 1ai,biN1 \le a_i,b_i \le N
  • aibia_i \ne b_i

子任务

子任务 分值 依赖子任务 附加限制
1 7 - N100,M300N \le 100, M \le 300
2 8 1 N1000,M3000N \le 1000, M \le 3000
3 31 1, 2 N1000N \le 1000
4 15 - MN20M-N \le 20
5 39 1-4

只有通过某个子任务的所有测试点以及它依赖的所有子任务,才能获得该子任务分数。

样例 1

输入

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

输出

1

解释

封锁道路 (1,3)(1,3) 的两个端点城市 1133 后,剩余图中城市 22 和城市 44 分别属于两个不同的连通块。

样例 2

输入

6 7
1 2
2 4
2 6
3 5
6 1
4 3
2 5

输出

4

解释

满足条件的道路为 (1,2)(1,2)(2,4)(2,4)(2,6)(2,6)(2,5)(2,5)