{"trustable":false,"sections":[{"title":"Description","value":{"format":"MD","content":"从前有一个小镇,有很多街道和很多路口。所有的街道都是单向的,每条街道链接两条路口。\n\n从一个路口开始,通过城镇街道,你永远无法到达同一个路口。即我们保证城镇街道不形成环。\n\n现在你要派一些伞兵攻陷这个城镇。\n\n每个伞兵可以被降落在一个路口然后沿着一条道路行进,沿途占领所有的路口。但是所有伞兵都不能碰面。\n\n根据这些假设,你的任务是编写一个程序,找出能够降落到该镇并进攻该镇所有路口的伞兵的最小数量。"}},{"title":"Input","value":{"format":"MD","content":"你的程序应该能够处理多组数据。\n\n输入的第一行是数据组数。\n\n以下每组数据描绘出城镇的结构,格式如下:\n\n第一行一个整数,城镇的路口数$N$。\n第二行一个整数,城镇的街道数$M$。\n以下$M$行,每行两个整数,用空格隔开,代表一条街道的起点和重点。\n$N \\leq 120$。路口的标号从$1$开始一直到$N$。\n\n输入数据之间没有空行。我们保证输入数据是正确的。"}},{"title":"Output","value":{"format":"MD","content":"输出到标准输出:对于每组数据打印一个整数,代表这组数据的结果。"}},{"title":"Sample Input","value":{"format":"MD","content":"\u003cpre class\u003d\"sio\"\u003e2\n4\n3\n3 4\n1 3\n2 3\n3\n3\n1 3\n1 2\n2 3\u003c/pre\u003e"}},{"title":"Sample Output","value":{"format":"MD","content":"\u003cpre class\u003d\"sio\"\u003e2\n1\u003c/pre\u003e"}}]}