J.I
题号:NC25528
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

养鸽场有 N 个鸽笼,编号为 1 ~ N 。
有些鸽笼之间有道路。一共有 M 条无向道路,并且这些道路不形成环。
两位鸽王都有自己的手下,都会管理一些鸽笼让手下住进去(手下数量无限,每个鸽笼会住进无限个手下)。他们会正好分完所有的鸽笼。
他们会先分配每个鸽笼的归属,再让手下住进去。
令鸽王们头疼的是,如果一个鸽王的两个不同鸽笼的手下之间存在一条路径,并且路径上没有对方手下的话,那么这两位就会私奔。
鸽王们虽然有无限个手下,但是私奔这种事还是让他们很生气。
现在他们想问你,在满足**存在一种鸽笼的分配方案,使得没有鸽鸽私奔**的条件下,他们最多再修建多少条道路?
新的道路不能有自环,不能有重边,不能和原道路有重边。
新的养鸽场可以有环。

输入描述:

第一行两个整数 N,M
接下来 M 行,每行两个整数 u,v ,表示鸽笼 u 和鸽笼 v 之间有一条无向道路。
保证没有重边和自环。

输出描述:

一行一个整数 ans ,表示最多修建多少条道路。
示例1

输入

复制
3 1
1 2

输出

复制
1

备注:

对于所有  的数据,有