CF36E Two Paths
题目背景
注意这题要加上这个:
```
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
```
题目描述
考古学家发现了 $m$ 张神秘的纸条,每张纸条上都写着一对整数。已知古人喜欢记录他们走过的道路编号,格式为「$a$ $b$」或「$b$ $a$」,其中 $a,b$ 是通过道路连接的两个不同城市的编号。同时还知道,这些神秘纸条实际上是两本旅行日志中的页面(那时候每进行一次新的旅行就会写一本新日志)。
在一次旅行中,旅者可以多次经过同一条道路,可以从任意方向来回经过,每通过一次都会在日志上新记一条记录。此外,考古学家认为旅者经过道路的方向对记录没有影响:记作「$a$ $b$」的记录既可能表示从 $a$ 到 $b$ 的道路,也可能表示从 $b$ 到 $a$。
考古学家希望把这些页面按正确顺序排列并还原出两条完整旅行路径,但他们不擅长编程,这需要你的帮助。请帮他们实现!
输入格式
第一行输入整数 $m$($1 \leq m \leq 10000$)。接下来 $m$ 行,每行描述一张纸条,包含两个整数 $a,b$($1 \leq a,b \leq 10000$,$a \neq b$)。
输出格式
第一行为整数 $L_1$,即第一条路径的长度,即参与第一条路径的纸条数。第二行为 $L_1$ 个空格分隔的数字,依次为描述第一条路径的纸条编号(纸条编号与输入顺序相同,从 $1$ 到 $m$ 编号)。第三、四行为同样格式,依次输出第二条路径的长度 $L_2$ 及路径本身。每条路径必须至少包含一条路,即 $L_1>0$ 且 $L_2>0$。保证每一张纸条被且仅被用一次,即 $L_1+L_2=m$。输出应保证纸条编号顺序与旅者实际经过道路的顺序一致。如果存在多种方案,输出任意一种均可。
如果无法拆分为两条符合要求的旅行路径,则输出「-1」。
说明/提示
由 ChatGPT 5 翻译