loj#P3968. 「JOISC 2023 Day1」护照
「JOISC 2023 Day1」护照
题目描述
题目译自 JOISC 2023 Day1 T3 「パスポート / Passport」
护照是旅行者进入外国时在世界范围内使用的一种证件。
在一颗星球上有 个国家,从 到 编号。每个国家签发一种护照。当旅行者持有国家 签发的护照时,他可以进入国家 。这里,保证旅行者可以进入所持护照的签发国。也就是说,保证 。
你有一个喜欢旅行的朋友。他梦想环游世界,但他最开始没有护照。因此,他计划通过重复如下两个操作来环游所有的 个国家。
- 他获得了他目前所在国家签发的护照
- 他移动到一个可以使用他目前拥有的护照入境的国家
当你听说了他的计划时,你想知道他是否可以实现他的计划,并且如果可以的话,他至少需要获得多少本护照。因为你不知道他住在哪儿,你假设他住在 个可能的国家 。
给定护照和他可能居住的国家,写一个程序计算对于所有可能,他是否能够环游所有 个国家,并且如果可能的话,计算他至少要获得多少本护照。
输入格式
第一行一个整数 。
接下来 行,每行两个整数 。
接下来一行一个整数 。
接下来 行,每行一个整数 。
输出格式
输出 行,对于第 行输出你的朋友住在国家 的情况的答案。如果他可以环游所有 个国家,输出他最少获得护照本数。否则输出 。
4
1 3
2 4
2 3
4 4
1
1
2
假设你的朋友住在国家 。如果他按照如下方法行动,他将环游所有 个国家。然后他将获得 本护照。
- 他获得国家 签发的护照。
- 使用国家 签发的护照,他移动到国家 。
- 他获得国家 签发的护照。
- 使用国家 签发的护照,他移动到国家 。
- 使用国家 签发的护照,他移动到国家 。
因为如果他获得小于等于 本护照的话无法实现计划,因此输出 。
这组样例满足所有子任务的限制。
5
1 5
2 4
2 3
3 5
1 5
1
3
4
假设你的朋友住在国家 。如果他按照如下方法行动,他将环游所有 个国家。然后他将获得 本护照。
- 他获得国家 签发的护照。
- 使用国家 签发的护照,他移动到国家 。
- 他获得国家 签发的护照。
- 使用国家 签发的护照,他移动到国家 。
- 他获得国家 签发的护照。
- 使用国家 签发的护照,他移动到国家 。
- 他获得国家 签发的护照。
- 使用国家 签发的护照,他移动到国家 。
因为如果他获得小于等于 本护照的话无法实现计划,因此输出 。
这组样例满足子任务 的限制。
5
1 1
2 3
1 5
3 4
5 5
5
1
2
3
4
5
-1
2
1
2
-1
例如,如果你的朋友住在国家 ,如果他获得了国家 签发的护照,他可以按 的顺序前往这些国家来实现计划。因此,第三行输出 。
另一方面,如果你的朋友住在国家 ,即使他获得了国家 签发的护照,他也不可能进入其他国家。因此,他不能实现计划。因此第五行输出 。
这组样例满足子任务 的限制。
4
1 2
1 2
3 4
3 4
4
1
2
3
4
-1
-1
-1
-1
这组样例满足子任务 的限制。
数据范围与提示
对于所有输入数据,满足:
详细子任务附加限制及分值如下表所示。
子任务编号 | 附加限制 | 分值 |
---|---|---|
无附加限制 |