这题是拿来练习DFS的。
题中的输入中,一个时间对应了一辆BUS。
对这个数据进行尝试搜索。
这里不是直接对数据进行搜索,而是利用一个数组time[60]
time[x]表示x在输入数据中出现的次数。
now[x]表示x在已使用的数据中出现的次数。
搜索的思路:
find函数:
1.判断是否搜索结束
2.如果x无效,那么跳过。当time[x]-now[x]<=0时,则x无效,也就是说,这个x已经不能使用
3.first[60]存储了Bus route头一辆BUS的信息。也就是说,如果x是Bus route头一辆BUS,那么first[x]++。
这里先尝试x不是Bus route头一辆BUS,尝试遍历每一条Bus route。
4.最后尝试x是Bus route头一辆BUS,遍历。
题中规定了 每个Bus route至少有两辆BUS,可以利用这个来剪枝。
说的不是很清楚,边看代码边看思路吧
代码如下