分离路径
时间限制:1秒 内存限制:256M
【题目描述】
为了从 \(F\)(编号为 \(1..F\))个草场中的一个走到另一个,贝茜和他的同伴们有时不得不路过一些他们讨厌的可怕的树。奶牛门已经厌倦了被迫走某一条路,所以他们想建一些新路,使每一对草场之间至少有两条相互分离的路径,这样他们就多一些选择。
每对草场之间已经有至少一条路径,给出所有 \(R\) 条双向道路的描述,每条路连接了两个不同的牧场,请计算最少的新建道路的数量。
路径由若干道路首尾相连而成。两条路径分离,是指两条路径没有一条重合的道路,但是两条分离的路径可以有一些相同的草场。对于一对草场之间,可能已经有两条不同的道路,你也可以在他们之间再建一条道路,作为另一条不同的道路。
【输入格式】
第 1 行输入 \(F\) 和 \(R\) ,接下来 \(R\) 行,每行输入两个整数,表示两个草场之间有一条道路。
【输出格式】
最少需要建立的道路数量。
【输入输出样例】
Input
7 7
1 2
2 3
3 4
2 5
4 5
5 6
5 7
Output
2
【输入输出样例解释】
图中实线表示已有的道路,虚线表示新建的两条带路。现在可以检验一些路径,比如:
草场1和草场2:1->2 和 1->6->5->2
草场1和草场4:1->2->3->4 和 1->6->5->4
草场3和草场7:3->4->7 和 3->2->5->7
事实上,每一对草场之间连接了两条分离的路径。
【数据限制】
对于 \(100\%\) 的数据,\(1<=F<=5000\),\(F-1<=R<=10000\)。
【来源】
Mr.he