#P9083. 「HNOI2021 省集 Day3」膜拜大丹
「HNOI2021 省集 Day3」膜拜大丹
题目描述
丹是万物之神,所以你想去膜拜丹。
现在有两个国家信仰丹,不妨记作国家 A 和国家 B。国家 A 有 座城市,编号为 ;国家 B 有 座城市,编号为 。
国家 A 和国家 B 之间有单向航线连接,具体地,有长度为 数组 和长度为 的数组 ,国家 A 的第 座城市有单向航线可以到达国家 B 的编号为 的这些城市,国家 B 的第 座城市有单向航线可以到达国家 A 的编号为 的这些城市。
所有这 座城市都无比崇拜丹,定义一次“膜拜”为你选择从某个国家的某座城市出发,沿着单向航线走,不重复地经过至少一座城市,最后回到起点的过程(简单来说就是走一个简单有向环)。为了展现你的虔诚,你希望在你的所有“膜拜”中经过国家 A 的第 座城市不超过 次,经过国家 B 的第 座城市不超过 次(注意:在一次“膜拜”中起点和终点相同,但是认为起点只经过了一次)。
现在你想知道你可以最多进行多少次“膜拜”。
输入格式
从文件 worship.in
中读入数据。
输入第一行两个整数 表示两个国家的城市数量。
接下来一行 个整数描述数组 。
接下来一行 个整数描述数组 。
接下来一行 个整数描述数组 。
接下来一行 个整数描述数组 。
输出格式
输出到文件 worship.out
中。
输出仅一个整数表示你可以进行的最多的膜拜次数。
样例
样例 1
3 3
3 1 2
1 2 3
1 1 1
1 1 1
1
用符号 表示国家 A 的第 座城市, 表示国家 B 的第 座城市,这个样例中所有城市只能经过最多一次,不难发现最好情况下最多只能“膜拜”一次,一种“膜拜”方案为 $A_3 \to B_2 \to A_2 \to B_1 \to A_1 \to B_3 \to A_3$,经过所有点各一次。
样例 2
2 1
1 1
2
1 1
2
2
用符号 表示国家 A 的第 座城市, 表示国家 B 的第 座城市,这个样例中 只能经过最多一次, 只能经过最多两次,不难发现最好情况下最多只能“膜拜”两次,一种“膜拜”方案为 ,经过 各一次,经过 两次。
样例 3
见选手目录下的 worship/worship3.in
与 worship/worship3.ans
。
该样例满足测试点 的性质。
数据范围
对于所有测试数据,满足 ,,,。
每个测试点的具体限制见下表:
测试点编号 | 特殊性质 | ||
---|---|---|---|
无 | |||
无 |
特殊限制 :保证 并且 。
特殊限制 :保证 。