P8018 [COCI 2016/2017 #5] Strelice

题目描述

Hansel 和 Gretel 正在玩「箭头游戏」。 该游戏在一个 $R$ 行 $S$ 列的棋盘上进行。其中每一个棋格内有一个箭头($\leftarrow$、$\rightarrow$、$\uparrow$、$\downarrow$ 之一)。 游戏开始后,Hansel 可以选择任意 $K$ 个**不位于最后一列的**棋格进行填涂。接着,Gretel 可以选择**第一列的**任意一个棋格,作为机器人的初始棋格。机器人在放置到初始棋格后将按照箭头的指示自动行走。机器人一旦走到了最后一列,它将立即停止行走。 判定输赢的方式如下: - 如果机器人在有限的时间内停在了最后一列,那么:当且仅当机器人恰好经过一个有色棋格时,判定 Hansel 获胜,否则 Gretel 获胜。 - 如果机器人无法停止行走(即处于无限循环的状态),那么判定 Hansel 获胜。 规定机器人经过的棋格包括初始棋格、终止棋格以及路径上的其它所有棋格。同时,数据保证箭头不会指向棋盘外部。 你的任务是判断 Hansel 是否有必胜的方案(即对于 Gretel 所选择的任意一个合法的初始棋格,Hansel 的填涂方案都可以使自己获胜)。如果有必胜的方案,输出该方案;否则输出 $-1$。

输入格式

第一行,三个整数 $R,S,K$。 接下来的 $R$ 行,每行 $S$ 个字符 $\texttt L$、$\texttt R$、$\texttt U$ 或 $\texttt D$,分别表示对应棋格内的箭头为 $\leftarrow$、$\rightarrow$、$\uparrow$ 和 $\downarrow$。

输出格式

如果没有必胜的方案,输出 $-1$。 否则输出 $K$ 行,每行两个整数 $A,B$,表示选择的 $K$ 个将要涂色的棋格。棋格必须互不相同。如果存在多种方案,请输出任意一种。 Special Judge 对输出格式要求较严,因此**请勿在每行行尾添加多余空格。**

说明/提示

**【样例 1 解释】** 填涂 $(4,2)$ 后,无论初始棋格位于第一列的哪里,机器人都会经过 $(4,2)$。 **【样例 2 解释】** 由于需要填涂 $2$ 个棋格,因此至少有一行没有有色棋格。只要 Gretel 选择没有有色棋格的那一行的第一列放置机器人,Gretel 就会获胜。 **【样例 3 图解】** ![](https://cdn.luogu.com.cn/upload/image_hosting/oy6p59p5.png?x-oss-process=image/resize,m_lfit,h_200) **【数据规模与约定】** 对于 $100\%$ 的数据,$1 \le R \times S \le 10^6$,$1 \le K \le 50$,$1 \le A \le R$,$1 \le B \lt S$。 **【提示与说明】** 欢迎大家通过私信或发帖对自行编写的 [Special Judge](https://www.luogu.com.cn/paste/k9jt7zoy) 进行 hack。 **题目译自 [COCI 2016-2017](https://hsin.hr/coci/archive/2016_2017/) [CONTEST #5](https://hsin.hr/coci/archive/2016_2017/contest5_tasks.pdf) _T6 Strelice_。** **本题分值按 COCI 原题设置,满分 $160$。**