#P1422. Air Raid
Air Raid
描述
考虑一个所有街道都是单向的小镇,每条街道从一个十字路口通向另一个十字路口。已知从任意一个十字路口出发,沿着小镇的街道行走,你永远无法回到同一个十字路口,即小镇的街道不形成任何环路。
在这些假设下,你的任务是编写一个程序,找到可以降落在小镇上并访问所有十字路口的最小伞兵数量。要求每个伞兵降落在某个十字路口,并可以沿着街道访问其他十字路口,且每个十字路口只能被一个伞兵访问。每个伞兵的起始十字路口没有限制。
输入
你的程序需要读取多组数据。输入文件的第一行是数据组的数量。每组数据描述一个小镇的结构,格式如下:
十字路口数量
街道数量
S1 E1
S2 E2
......
S街道数量 E街道数量
每组数据的第一行是一个正整数(大于0且小于或等于120),表示小镇中的十字路口数量。第二行是一个正整数,表示小镇中的街道数量。接下来的行,每行随机排列,描述小镇的街道。第条街道()由两个正整数组成,中间用一个空格隔开:()表示街道的起始十字路口编号,()表示街道的终点十字路口编号。十字路口编号为1到的整数。
连续的数据组之间没有空行。输入数据保证正确。
输出
程序的结果输出到标准输出。对于每组输入数据,程序在一行中输出一个整数,表示访问小镇所有十字路口所需的最小伞兵数量。
输入数据 1
2
4
3
3 4
1 3
2 3
3
3
1 3
1 2
2 3
输出数据 1
2
1
来源
达卡 2002