P0876

[Usaco2009 Nov]lights 燈

[Usaco2009 Nov]lights 燈

贝希和朋友们正在牛棚中玩游戏,突然牛棚的电源跳闸,所有灯都熄灭了。贝希希望你帮助她重新打开所有的灯。

牛棚中共有 NN 盏灯,编号为 11 到 NN。这些灯之间由 MM 条无向边连接,形成一个网络。

每盏灯都有一个开关。按下某盏灯的开关时,这盏灯以及所有与它通过一条边直接相连的灯都会改变状态:原本亮着的灯会熄灭,原本熄灭的灯会亮起。

请计算最少需要按下多少个开关,才能使所有灯都亮起。数据保证至少存在一种可行方案。

输入格式

第一行包含两个由空格分隔的整数 NN 和 MM,分别表示灯的数量和无向边的数量。

接下来 MM 行,每行包含两个由空格分隔的整数,表示对应的两盏灯之间有一条无向边。

输入中不会重复出现同一条边。

输出格式

输出一个整数,表示使所有灯都亮起最少需要按下的开关数量。

样例输入

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

样例输出

3

样例解释

共有 55 盏灯,其中灯 11、灯 44 和灯 55 都与灯 22、灯 33 相连。

按下灯 11、灯 44 和灯 55 上的开关,即可使所有灯亮起,最少需要按下 33 个开关。

数据范围

  • 1≤N≤351\le N\le 35;
  • 1≤M≤5951\le M\le 595;
  • 输入中不存在重复的边;
  • 数据保证至少存在一种使所有灯都亮起的方案。

来源与许可

本题为 USACO 2009 November 试题「Lights 灯」,题面与测试数据整理自 BZOJ。

样例 1

输入

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

输出

3