#arc038d. [arc038_d]有向グラフと数
[arc038_d]有向グラフと数
问题描述
给定一个有 个顶点和 条边的有向图。每个顶点 上都有一个整数 。喜欢玩游戏的兄妹准备使用这个图和一个棋子来进行游戏。
- 初始时,棋子放在顶点 上。
- 玩家在自己的回合中必须执行以下两种操作之一:
- 移动:将棋子移动一次到另一个顶点。如果棋子在顶点 上,则只能将其移动到存在从顶点 到顶点 的边的顶点 上。
- 宣告结束:结束游戏。
- 交替进行回合,直到某个玩家宣告结束,或者在后手进行了 次移动后游戏结束。此时,棋子所在顶点上的整数即为游戏的得分。
先手玩家要采取行动以尽可能增加得分,而后手玩家要采取行动以尽可能降低得分。请问最终的得分是多少?
输入格式
输入从标准输入读取,具体格式如下:
... :
- 第 行包含两个整数,用空格分隔,分别表示顶点的个数 ()和边的个数 ()。
- 第 行包含 个整数,用空格分隔,表示每个顶点上的整数。其中第 ()个整数 ()表示顶点 上的整数。
- 接下来的 行描述边的信息。其中第 ()行包含两个整数 和 ,用空格分隔,表示从顶点 到顶点 存在一条有向边。保证不存在重复的边,即对于任意 ,有 或者 。
子任务
本问题设有部分分。
- 对于满足 和 的数据集 ,答案正确可以获得 分。
- 对于所有测试用例答案正确可以额外获得 分。
输出格式
输出到标准输出,末尾必须包含换行符。
输出游戏的得分。
示例 1
3 3
1 3 2
1 2
2 3
3 1
输出示例 1
2
在这个示例中,游戏的进行如下:
- 先手玩家选择移动,将棋子从顶点 移动到顶点 。
- 后手玩家选择移动,将棋子从顶点 移动到顶点 。
- 先手玩家选择宣告结束,结束游戏。此时得分为 。
无论先手玩家采取何种行动,后手玩家都可以通过采取适当的行动来使得得分不大于 。
同样地,无论后手玩家采取何种行动,先手玩家都可以通过采取适当的行动来使得得分不小于 。
示例 2
4 5
1 3 2 1
1 2
2 3
3 1
2 4
4 3
输出示例 2
1
在这个示例中,游戏的进行如下:
- 先手玩家选择移动,将棋子从顶点 移动到顶点 。
- 后手玩家选择移动,将棋子从顶点 移动到顶点 。
- 先手玩家选择移动,将棋子从顶点 移动到顶点 。
- 后手玩家选择移动,将棋子从顶点 移动到顶点 。
- 先手玩家选择移动,将棋子从顶点 移动到顶点 。
- 后手玩家选择移动,将棋子从顶点 移动到顶点 。
- (重复上述过程一段时间)
- 后手玩家进行第 次移动,将棋子从顶点 移动到顶点 。
- 游戏结束,此时得分为 。
无论先手玩家采取何种行动,后手玩家都可以通过采取适当的行动来使得得分不大于 。
同样地,无论后手玩家采取何种行动,先手玩家都可以通过采取适当的行动来使得得分不小于 。