#P3180. The Cow Prom

The Cow Prom

描述

NN2N10,0002 \leq N \leq 10,000)头奶牛兴奋不已:今晚是舞会之夜!它们身着最华美的礼服,佩戴着胸花,脚踩新鞋。它们知道今晚要一起表演圆圈舞。

只有奶牛能表演圆圈舞,这需要一些绳子和一个圆形的储水槽。表演开始时,奶牛们围绕储水槽排成一圈,按顺时针顺序依次编号为11NN。每头奶牛都面朝储水槽,这样就能看到其他舞者。

随后,它们一共获得了MM2M50,0002 \leq M \leq 50,000)根绳子,所有绳子都分发给奶牛,由它们用蹄子握住。每头奶牛希望左右蹄各握住至少一根绳子;有些奶牛可能会失望。

对于任意一头奶牛(比如贝茜)来说,若它的圆圈舞表演成功,那么它握住的绳子另一端连接的奶牛(如果有的话),以及这些奶牛握住的绳子另一端的奶牛,依此类推,必须构成特定的结构。当贝茜顺时针绕储水槽舞动时,必须能立即带动群体中的所有奶牛顺时针舞动;同理,若她逆时针舞动,也必须能立即带动整个群体逆时针舞动。

当然,如果绳子分布不当,一组奶牛可能无法形成合适的舞蹈群体,从而无法成功表演圆圈舞。一种常见的情况是,当只有一根绳子连接两头奶牛时。此时,一头奶牛可以朝一个方向拉动另一头,但无法反向拉动(因为众所周知,绳子无法推动)。请注意,奶牛必须同步舞动:若某头奶牛(可能只有一根绳子)最终被拉动,但无法立即与其他奶牛同步,则该群体不能成功完成圆圈舞。

给定绳子及其分配情况,有多少组奶牛可以成功表演圆圈舞?注意,一组绳子和奶牛可能绕储水槽多圈。

输入

第1行:两个空格分隔的整数NNMM
第2到M+1M+1行:每行包含两个空格分隔的整数AABB,描述一根从奶牛AA到奶牛BB的顺时针方向的绳子。

输出

一行,一个整数,表示成功表演圆圈舞的群体数量。

输入数据 1

5 4  
2 4  
3 5  
1 2  
4 1  

输出数据 1

1  

提示

样例解释:
用ASCII艺术表现圆圈舞颇具挑战。不过,以下是奶牛围绕储水槽的示意图:

       _1___  
      /**** \  
   5 /****** 2  
  / /**TANK**|  
  \ \********/  
   \ \******/  3  
    \ 4____/  /  
     \_______/  

奶牛1、2和4通过绳子正确连接,形成一个完整的圆圈舞群体。奶牛3和5没有所需的第二根绳子来实现双向拉动,因此无法正确表演圆圈舞。

来源

USACO 2006年1月银牌组