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$。 如果有多种合法方案,可以输出任意一种。

说明/提示

在第一个测试用例中,城市的结构如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1559C/c2e581af2a9a8a7c84fbcdcb044c393f08812267.png) 因此所有可能的答案为 $(1 \to 4 \to 2 \to 3)$,$(1 \to 2 \to 3 \to 4)$。 在第二个测试用例中,城市的结构如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1559C/50cae05bb483d2eef22f0fe8c5bad7425f443436.png) 因此所有可能的答案为 $(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 翻译