#P1790. 灯的开关(lights)

灯的开关(lights)

【问题描述】

贝希和她的闺密们在她们的牛棚中玩游戏。但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了。贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐, 痛苦与绝望。

她希望您能够帮帮她,把所有的灯都给重新开起来!她才能继续快乐地跟她的闺密们继续玩游戏!牛棚中一共有 N 盏灯,编号为 1 到 N。这些灯被置于一个非常复杂的网络之中。有 M 条很神奇的无向边,每条边连接两盏灯。每盏灯上面都带有一个开关。

当按下某一盏灯的开关的时候,这盏灯本身,还有所有有边连向这盏灯的灯的状态都会被改变。状态改变指的是:当一盏灯是开着的时候,这盏灯被关掉;当一盏灯是关着的时候,这盏灯被打开。问最少要按下多少个开关,才能把所有的灯都给重新打开。数据保证至少有一种按开关的方案,使得所有的灯都被重新打开。

【输入文件】

第一行,两个空格隔开的整数:N 和 M;

第二到第 M+1 行,每一行有两个由空格隔开的整数,表示两盏灯被一条无向边连接在一起。没有一条边会出现两次。

【输出文件】

一行,一个单独的整数,表示要把所有的灯都打开时,最少需要按下的开关的数目。

【样例输入】

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

【样例输出】

3

【样例解释】

输入:一共 5 盏灯。灯 1、灯 4 和灯 5 都连接着灯 2 和灯 3。

输出:按下在灯 1、灯 4 和灯 5 上面的开关。

【数据范围】

对于 5% 的数据,N≤5,M≤10;

对于 30% 的数据,N≤21,M≤101;

对于 100% 的数据,N≤35,M≤595。