AT_arc103_c [ARC103E] Tr/ee
题目描述
[problemUrl]: https://atcoder.jp/contests/arc103/tasks/arc103_c
给定一个长度为 $n$ 的字符串 $s$。是否存在满足以下条件的 $n$ 个顶点的树?
- 每个顶点被编号为 $1,2,\ldots,n$;
- 每条边被编号为 $1,2,\ldots,n-1$,其中第 $i$ 条边连接顶点 $u_i$ 和 $v_i$;
- 当 $s$ 的第 $i$ 个字符为 `1` 时,存在一种移除某条边的方式,使得能生成一个大小为 $i$ 的连通块;
- 当 $s$ 的第 $i$ 个字符为 `0` 时,无论如何移除一条边,都无法生成大小为 $i$ 的连通块;
如果存在满足条件的树,请构造一个符合条件的树。
输入格式
输入通过标准输入给出,格式如下:
> $ s $
输出格式
如果不存在满足条件的 $n$ 个顶点的树,输出 `-1`。
如果存在满足条件的 $n$ 个顶点的树,输出 $n-1$ 行。第 $i$ 行输出以空格分隔的 $u_i$ 和 $v_i$。若有多个符合条件的树,输出任意一个均可。
说明/提示
### 约束条件
- $2 \leq n \leq 10^5$
- $s$ 是由 `0` 和 `1` 组成的长度为 $n$ 的字符串
### 样例解释 1
从 $n$ 顶点的树中移除一条边无法生成大小为 $n$ 的连通块。
### 样例解释 2
移除第 1 条或第 3 条边会生成一个大小为 1 的连通块和一个大小为 3 的连通块。移除第 2 条边会生成两个大小为 2 的连通块。
### 样例解释 3
无论移除哪条边,都会生成一个大小为 1 的连通块和一个大小为 3 的连通块。
翻译由 DeepSeek R1 完成