#P14898. [OOI2017预选赛long]Включи свет, закрой двери!开灯,关门!

[OOI2017预选赛long]Включи свет, закрой двери!开灯,关门!

原题是交互题。为了适配 Hydro OJ 的普通评测,本版本改为:直接给出迷宫的完整图结构,选手需要输出一组合法操作序列。评测器会模拟执行你的操作,只要最终满足要求即可通过。
本题需要使用 Special Judge。

题目描述

在城市 NN 中有一个流行的新密室逃脱游戏。玩家需要逃出一个由若干房间组成的迷宫。每个房间中都有:

  • 若干扇门;
  • 一盏灯;
  • 两个开关。

第一个开关可以打开或关闭当前房间的灯,使用次数不限。

第二个开关只能在离开当前房间时使用一次:当玩家从当前房间通过某扇门离开后,当前房间的所有门会立即被锁住,之后该房间将不能再进入。

初始时所有房间都是未锁住的,部分房间的灯已经亮着。你的目标是:

  1. 使所有房间的灯都处于打开状态;
  2. 锁住除当前所在房间以外的所有房间。

你可以输出一系列操作,评测器会按照规则模拟执行。操作次数不能超过 3000030000 次,最后必须输出 done

输入格式

第一行包含两个整数 n,mn,m,表示房间数量和门的数量。

第二行包含 nn 个整数 b1,b2,,bnb_1,b_2,\ldots,b_n。若 bi=1b_i=1,表示第 ii 个房间初始灯亮;若 bi=0b_i=0,表示第 ii 个房间初始灯灭。

接下来 mm 行,每行包含两个整数 u,vu,v,表示房间 uu 与房间 vv 之间有一扇门。

最后一行包含一个整数 ss,表示玩家初始所在的房间编号。

门的编号规则如下:对于每个房间,按照输入边出现的顺序,依次给与该房间相邻的门编号为 1,2,3,1,2,3,\ldots。例如,如果输入边依次为 (1,2)(1,3),那么在房间 11 中,通向房间 22 的门编号为 11,通向房间 33 的门编号为 22

输出格式

输出若干行操作,每行一个操作。允许的操作如下:

  • turn on:打开当前房间的灯。如果当前房间的灯已经打开,则不发生变化。
  • turn off:关闭当前房间的灯。如果当前房间的灯已经关闭,则不发生变化。
  • go edgeId keep:尝试从当前房间通过编号为 edgeId 的门移动到相邻房间,并保持当前房间未锁住。
  • go edgeId lock:尝试从当前房间通过编号为 edgeId 的门移动到相邻房间;如果移动成功,则离开后锁住当前房间。
  • done:结束操作序列。

如果 go 操作试图进入一个已经锁住的房间,则移动失败,玩家仍留在当前房间,并且当前房间不会因为本次操作被锁住。

你的输出必须满足:

  • 操作总数不超过 3000030000,其中 done 也计为一次操作;
  • 所有 go 操作中的门编号必须在当前房间中存在;
  • 执行到 done 时,所有房间的灯都必须打开;
  • 执行到 done 时,除当前所在房间外,其余所有房间都必须已经被锁住。

如果存在多种合法操作序列,输出任意一种即可。

数据范围

  • 2n502 \le n \le 50
  • 1m1001 \le m \le 100
  • bi{0,1}b_i \in \{0,1\}
  • 图为无向连通图;
  • 不存在自环;
  • 任意两个房间之间至多有一条门直接相连。

样例 1

输入

2 1
0 0
1 2
1

输出

turn on
go 1 keep
turn on
go 1 lock
done

样例 2

输入

3 2
1 1 1
1 2
2 3
2

输出

turn on
go 1 keep
turn on
go 1 lock
go 2 keep
turn on
go 1 lock
done

样例 3

输入

3 3
0 1 1
1 2
2 3
3 1
1

输出

turn on
go 1 keep
turn on
go 2 keep
turn on
go 1 lock
go 1 lock
done

样例解释

以上样例输出仅为一种合法方案。由于本题使用 Special Judge,只要你的操作序列满足要求,即使与样例输出不同,也会被判为正确。

子任务

子任务 测试点 分值 限制
0 1--3 0 样例测试
1 4--19 30 图是一棵树
2 20--29 图是一个环
3 30--46 40 无额外限制