LintCode想让它最好的员工之一选择在N个城市间旅行来收集算法问题。但是只工作不玩耍,聪明的孩子也会变傻,你可以在某些特定的城市并且一个星期里去度假。你的工作是安排旅行,尽可能多的假期,但是有一些规则和限制你需要遵守。
规则和限制:
您只能在1个城市中旅行,由0到N-1的索引表示。一开始,你周一在城市0。
这些城市都是通过航班连接起来的。这些航班被表示为N*N矩阵(非必要对称),称为代表航空公司从城市i到j城市状态的flights矩阵。如果没有从城市i到城市j的航班,flights[i][j] = 0;否则,flights[i][j]= 1。还有,flights[i][i] = 0。
你总共有K周(每周有7天)旅行。你只能每天最多乘坐一次航班,而且只能在每周一早上乘坐航班。由于飞行时间太短,我们不考虑飞行时间的影响。
对于每个城市,你只能在不同的星期里限制休假日,给定一个命名为days的N*K矩阵表示这种关系。对于days[i][j]的值,它表示你可以在j+1周的城市i里休假的最长天数,你得到的是flights矩阵和days矩阵,你需要输出你在K周期间可以获得的最长假期。
- N和K是正整数,它们在[1, 100]的范围内。
- 在flights矩阵中,所有的值都是在[0, 1]范围内的整数。
- 在days矩阵中,所有的值都是范围内的整数[0, 7]。
- 你可以呆在一个超过假期天数的城市,但是你应该多工作几天,这不会算作休假日。
- 如果你从A市飞到B市,并在那天休假,那么假期的扣除将计入B城市的假期天数。
- 我们不考虑飞行时间对计算假期的影响。