题目内容
G公司里包括老板在内共有N个员工,其中除了1号是老板,剩下的N-1个员工每人各有一个顶头上司。对于每个员工来说,顶头上司的顶头上司也是自己的上司,以此类推,顶头上司的顶头上司的顶头上司……直至老板都是自己的上司。员工可以向自己的任何一个上司汇报工作,然而层级差别越大时汇报工作的效率就越低。在这里,我们规定,员工向顶头上司汇报所花的时间是1,向顶头上司的顶头上司汇报所花的时间是2,以此类推。
现在需给M个员工布置项目工作,M个员工可分为两个类型,一类是产品研发,一类是市场销售。公司希望将两个不同类型的员工结成对子作为一个项目小组。对于结成对子的两个员工,他们需选定两人的某一位共同上司定期汇报项目工作。如果结成对子的两个员工其中一个是另一个的上司,则只需要作为下属的员工向另一个汇报即可,作为上司的员工无需汇报。
G公司希望将这M个员工两两结成对子,问如何规划配对才能使得汇报工作所花时间最多的员工用时最小。如果M个员工无论如何都无法两两配对成功,则输出-1。
输入格式
第一行包含两个正整数N(1≤N≤1000)和M(2≤M≤N),表示公司有N个员工,需给M个员工布置项目工作。
第二到N行,每行包含1个正整数,第i行的整数表示i号员工的顶头上司的编号。
第N+1行到N+M行,每行包含2个整数id(1≤id≤N)和type(type=0或1),表示被布置工作的员工编号和所属类型。
输出格式
输出包含一个整数,为汇报工作所花时间最多的员工的最小汇报时间。若不存在任何配对方案,则输出-1。
样例 1 输入
4 4
4
1
1
1 0
4 1
2 0
3 1
样例 1 输出
1
样例 2 输入
7 6
1
1
2
4
2
3
2 0
3 0
4 1
6 1
7 0
5 1
样例 2 输出
2
子任务
子任务名 评分方式 时间限制 内存限制 说明 分数
默认子任务 求和 1000 ms 512 MB
100
数据范围
对于30%的数据,是一条链。
对于70%的数据,1≤N≤100,1≤M≤20。
对于100%的数据,1≤N≤1000,M为偶数且M≤N。