Informatica Online Judge

  이진트리 출력하기 [1999 / 07CF]

Time Limit(Test case) : 1000 (ms)
Number of users who solved : 10   Total Tried : 1


The Champion of this Problem (C++) : N/A
My Best Submission (C++) : N/A

[koistudy.net (HS Jeon 2017)]

Background

트리의 연결관계가 입력되었을 때,

이 트리 구조를 조건에 맞도록 출력하는 프로그램을 작성하시오.

==============================================================================================

* 입력되는 트리는 항상 이진 트리임을 보장한다.

* 모든 노드는 알파벳 소문자를 값으로 하며, 모든 노드의 알파벳은 서로 다르다.

* 입력되는 트리의 루트노드는 항상 "a"다. (모든 입력에 "a"는 존재한다.)

* 자식이 하나일 경우는 항상 오른쪽 자식이고, 둘일 경우에는 오른쪽 자식이 사전순으로 빠른 알파벳으로 배치한다.

* 출력할 수 있는 문자는 "알파벳 소문자", "-", "+", "|", "." 으로 구성된다.

* 오른쪽 자식은 부모와 같은 행의 오른쪽에 배치된다.

* 왼쪽 자식은 부모보다 더 아래쪽 행에 배치된다.

* 깊이가 같은 모든 노드들은 모두 같은 열에 배치된다.

==============================================================================================

규칙이 적용된 사항에 대해서는 입력예시를 참고한다.

Input

첫 번째 줄에 노드의 수 n이 입력된다.

두 번째 줄부터 n-1줄에 걸쳐서 엣지가 연결하는 두 노드가 공백으로 구분되어 입력된다.

[입력값의 정의역]

$3 ≤ n ≤ 26$

Output

규칙에 맞도록 트리의 구조를 출력한다.

IO Example

입력1

6
a b
c b
d c
e d
d f

출력1
-a-b-c-d-e
.......+-f

입력2

9
a b
a c
b f
b g
c d
c e
d h
d i

출력2
-a-b-f..
.|.+-g..
.+-c-d-h
...|.+-i
...+-e..


Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]