最新消息:680元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 【例 3】移棋子游戏

C++ 少儿编程 1237浏览 0评论

友情提示:680元/半年,儿童学编程,就上码丁实验室

【题目描述】

给定一个有 $N$ 个节点的有向无环图,图中某些节点上有棋子,两名玩家交替移动棋子。

玩家每一步可将任意一颗棋子沿一条有向边移动到另一个点,无法移动者输掉游戏。

对于给定的图和棋子初始位置,双方都会采取最优的行动,询问先手必胜还是先手必败。

【输入】

第一行,三个整数 $N , M, K$, $N$ 表示图中节点总数, $M$ 表示图中边的条数, $K$ 表示棋子的个数。

接下来 $M$ 行,每行两个整数 $X, Y$ 表示有一条边从 $X$ 出发指向 $Y$。

接下来一行, $K$ 个空格间隔的整数,表示初始时,棋子所在的节点编号。

【输出】

若先手胜,输出 $win$,否则输出 $lose$。

【输入样例】

6 8 4
2 1
2 4
1 4
1 5
4 5
1 3
3 5
3 6
1 2 4 6

【输出样例】

win

【提示】

数据范围与提示:

对于全部数据, $N≤2000,M≤6000,1≤K≤N$。

您必须 登录 才能发表评论!