AT_iroha2019_day4_i ピンチ
题目描述
炸弹拥有 $N$ 个端子。两个端子之间有且仅有一条导线,并且电流只能沿某个特定方向流动(也就是说,炸弹在拓补上是一个完全图,各边有特定的方向)。需要注意的是**这些方向在输入中并不会给出**。每条导线都有一个开关,默认为关闭状态。我们需要按照以下步骤来拆除炸弹:
- 指定需要解除的端子数量 $K$。
- 指定 $K$ 个不同的端子编号 $A_1, A_2, \cdots, A_K$,并按顺序依次解除它们。
- 所有 $1 \leq i < K$ 的情况下,$A_i$ 和 $A_{i+1}$ 之间的导线流向必须是 $A_i \rightarrow A_{i+1}$。
你的任务是通过多次以下两种查询操作,找出一个有效的解除顺序 $K, A_i$:
- 「切换」:指定两个端子 $U_i, V_i$,切换它们之间的导线的状态。如果开启的导线数量超过 $2N$ 条,炸弹会立即爆炸。
- 「检测」:查询是否存在从 $U_i$ 到 $V_i$ 的路径,仅能通过当前开启的导线传输电流。如果可以传输,返回 `Y`,否则返回 `N`。
满足以下任一条件时,炸弹会爆炸,且你的方案将被视为错误:
- 查询或答案无效。
- 超过 $666666$ 次「切换」操作。
- 超过 $10000$ 次「检测」操作。
- 开启的导线超过 $2N$ 条。
- 存在一个方案可以解除更多的端子。
输入格式
首先,从标准输入读取一个整数 $N$:
> $ N $
接下来,可以执行多次「切换」和「检测」查询。每次查询要按照以下格式输出:
「切换」查询:
> 1 $ U_i $ $ V_i $
其中 $1 \leq U_i, V_i \leq N$,且 $U_i \neq V_i$。
「检测」查询:
> 2 $ U_i $ $ V_i $
其中 $1 \leq U_i, V_i \leq N$,且 $U_i \neq V_i$。此查询之后,标准输入会返回一个如下格式的答案:
```
ans
```
其中,$ans$ 为 `Y` 或 `N`。
最后,输出答案,格式如下:
> 0 $ K $ 0 $ A_1 $ $ A_2 $ $\cdots$ $ A_K $
随后程序必须立即终止。
输出格式
无
说明/提示
- $2 \leq N \leq 800$
### 注意事项
- 在每次输出后,一定要刷新标准输出,以防止程序超时。
- 输出答案后,程序应立即结束。如果输出错误或程序运行异常,行为结果是不确定的。
### 样例
在这个示例中,$N = 3$,电流的方向为 $1 \rightarrow 2, 2 \rightarrow 3, 3 \rightarrow 1$。输出的方案是 $K = 3, A_i = 3 \rightarrow 1 \rightarrow 2$。
输入和输出示例如下:
```
输入:
3
输出:
1 2 3
1 1 3
2 3 1
Y
2 2 1
Y
2 3 2
N
1 1 2
2 3 2
Y
0 3 0
3
1
2
```
**本翻译由 AI 自动生成**