{"trustable":true,"sections":[{"title":"","value":{"format":"HTML","content":"考虑一个所有街道都是单向的小镇,每条街道连接一个交叉口到另一个交叉口。已知从一个交叉口开始,沿着小镇的街道行走,永远不会到达同一个交叉口,即小镇的街道不会形成循环。\r\u003cbr\u003e\r\u003cbr\u003e在这些假设条件下,你的任务是编写一个程序,找出可以降落在小镇上并访问所有交叉口的最少伞兵数量,使得不止一个伞兵访问同一个交叉口。每个伞兵降落在一个交叉口,可以访问其他交叉口,遵循小镇的街道。对于每个伞兵,没有关于起始交叉口的限制。\r\u003cbr\u003e"}},{"title":"输入","value":{"format":"HTML","content":"程序应该读取一组数据。输入文件的第一行包含数据集的数量。每个数据集指定了小镇的结构,格式如下:\r\u003cbr\u003e\r\u003cbr\u003e交叉口数量\r\u003cbr\u003e街道数量\r\u003cbr\u003eS1 E1\r\u003cbr\u003eS2 E2\r\u003cbr\u003e......\r\u003cbr\u003eS街道数量 E街道数量\r\u003cbr\u003e\r\u003cbr\u003e每个数据集的第一行包含一个正整数交叉口数量(大于0且小于等于120),即小镇中交叉口的数量。第二行包含一个正整数街道数量,即小镇中街道的数量。接下来的街道数量行,每行代表小镇中的一条街道,随机排序,表示小镇的街道。与第k条街道对应的行(k ≤ 街道数量)包含两个正整数,用一个空格分隔:Sk(1 ≤ Sk ≤ 交叉口数量) - 街道起始的交叉口编号,和Ek(1 ≤ Ek ≤ 交叉口数量) - 街道结束的交叉口编号。交叉口用从1到交叉口数量的整数表示。\r\u003cbr\u003e\r\u003cbr\u003e在连续的数据集之间没有空行。输入数据是正确的。\r\u003cbr\u003e"}},{"title":"输出","value":{"format":"HTML","content":"程序的输出结果是标准输出。对于每个输入数据集,程序在一行上打印一个整数,表示访问小镇中所有交叉口所需的最少伞兵数量。\r\u003cbr\u003e"}},{"title":"示例","value":{"format":"HTML","content":"\u003ctable class\u003d\u0027vjudge_sample\u0027\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e2\r\n4\r\n3\r\n3 4\r\n1 3\r\n2 3\r\n3\r\n3\r\n1 3\r\n1 2\r\n2 3\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003e2\r\n1\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e"}}]}