考虑一个所有街道都是单向的城镇,每条街道从一个交叉路口通向另一个交叉路口。从一个交叉路口开始,穿过小镇的街道,你永远无法到达同一个交叉路口,即小镇的街道不会形成环周期。
根据这些假设,你的任务是编写一个程序,找到可以降落到城镇的伞兵的最小数量,使得伞兵能够访问这个城镇的所有交叉路口,并且不会有多个伞兵到达同一个交叉路口。 每个伞兵从一个交叉路口开始,可以沿着城镇街道访问其他交叉路口。 每个伞兵的起始交叉点没有限制。
考虑一个所有街道都是单向的城镇,每条街道从一个交叉路口通向另一个交叉路口。从一个交叉路口开始,穿过小镇的街道,你永远无法到达同一个交叉路口,即小镇的街道不会形成环周期。
根据这些假设,你的任务是编写一个程序,找到可以降落到城镇的伞兵的最小数量,使得伞兵能够访问这个城镇的所有交叉路口,并且不会有多个伞兵到达同一个交叉路口。 每个伞兵从一个交叉路口开始,可以沿着城镇街道访问其他交叉路口。 每个伞兵的起始交叉点没有限制。
您的程序应该读取多组测试数据。输入文件的第一行包含测试数据的数量。每个测试数据都指定一个城镇的结构,格式如下:
N每个测试数据的第一行包含正整数N(0<N<=120),这是城镇中的交叉路口数。第二行包含一个正整数M,它是城镇中的街道数。接下来有M行,每行表示一个单向街道,S[i]表示街道的起点,E[i]表示街道的终点。交叉路口由1到N的整数表示。
连续数据集之间没有空行,并保证输入数据是正确的。
对于每个输入数据集,程序打印在一行结果,包含访问城镇中所有交叉路口所需的最小伞兵数。
2 4 3 3 4 1 3 2 3 3 3 1 3 1 2 2 3
2 1