CF1559C Mocha and Hiking
题目描述
Mocha 所在的城市叫做 Zhijiang。这个城市里有 $n+1$ 个村庄和 $2n-1$ 条有向道路。
道路有两种类型:
- 有 $n-1$ 条道路,从村庄 $i$ 到村庄 $i+1$,对于所有 $1 \leq i \leq n-1$。
- 有 $n$ 条道路,由一个序列 $a_1,\ldots,a_n$ 描述。如果 $a_i=0$,则第 $i$ 条这样的道路从村庄 $i$ 到村庄 $n+1$;否则它从村庄 $n+1$ 到村庄 $i$,对于所有 $1 \leq i \leq n$。
Mocha 计划这个周末和 Taki 一起去远足。为了避免旅途无聊,他们计划恰好经过每个村庄一次。他们可以从任意村庄出发,也可以在任意村庄结束。你能帮他们制定一条路线吗?
输入格式
每个测试点包含多组测试数据。
第一行包含一个整数 $t$($1 \le t \le 20$)——表示测试用例的数量。每组测试数据包含两行。
每组测试数据的第一行包含一个整数 $n$($1 \le n \le 10^4$)——表示村庄的数量为 $n+1$。
每组测试数据的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i \le 1$)。如果 $a_i=0$,表示有一条从村庄 $i$ 到村庄 $n+1$ 的道路。如果 $a_i=1$,表示有一条从村庄 $n+1$ 到村庄 $i$ 的道路。
保证所有测试用例中 $n$ 的总和不超过 $10^4$。
输出格式
对于每组测试数据,输出一行共 $n+1$ 个整数,表示他们经过的村庄编号顺序。如果不存在这样的路线,输出 $-1$。
如果有多种合法方案,可以输出任意一种。
说明/提示
在第一个测试用例中,城市的结构如下图所示:

因此所有可能的答案为 $(1 \to 4 \to 2 \to 3)$,$(1 \to 2 \to 3 \to 4)$。
在第二个测试用例中,城市的结构如下图所示:

因此所有可能的答案为 $(4 \to 1 \to 2 \to 3)$,$(1 \to 2 \to 3 \to 4)$,$(3 \to 4 \to 1 \to 2)$,$(2 \to 3 \to 4 \to 1)$。
由 ChatGPT 4.1 翻译