소개
이 도전에서, 당신의 임무는 주어진 두 나무가 동형인지 여부를 결정하는 프로그램을 작성하는 것입니다. 트리는 루트를 제외한 모든 노드에 정확히 하나의 나가는 모서리가있는 유향 비순환 그래프를 의미합니다. 노드의 이름을 바꾸어 하나의 트리를 다른 트리로 변형 할 수있는 경우 두 트리는 동형입니다. 예를 들어, 두 개의 나무 (모든 모서리가 위로 향하는 곳)
0 0
/|\ /|\
1 3 4 1 2 5
|\ /|
2 5 3 4
쉽게 동형 인 것으로 보인다.
L
다음과 같은 방법으로 트리를 음이 아닌 정수 목록으로 인코딩합니다 . 나무의 뿌리에는 라벨이 있습니다0
이 있으며 노드도 있습니다 1,2,...,length(L)
. 각 노드 i > 0
에는 발신 L[i]
기반이 있습니다 (1 기반 색인 사용). 예를 들어, 목록 (요소 아래에 색인이 있음)
[0,0,1,3,2,2,5,0]
1 2 3 4 5 6 7 8
나무를 인코딩
0
/|\
1 2 8
| |\
3 5 6
| |
4 7
입력
입력은 기본 형식 또는 언어로 제공되는 음이 아닌 정수의 두 목록입니다. 위에서 지정한 방식으로 두 개의 트리를 인코딩합니다. 그들에 대해 다음과 같은 조건을 가정 할 수 있습니다.
- 그들은 비어 있지 않습니다.
- 그들은 같은 길이를 가지고 있습니다.
- 각 목록 은 모든 (1 기반) 지수를
L
충족시킵니다 .L[i] < i
i
산출
나무가 동형 인 경우 산출물은 진실한 값이되고 그렇지 않으면 거짓 값이됩니다.
규칙과 득점
전체 프로그램이나 함수를 작성할 수 있습니다. 가장 낮은 바이트 수가 이기고 표준 허점은 허용되지 않습니다. 시간 제한은 없지만 트리 또는 그래프 동형을 결정하는 기본 제공 기능은 허용되지 않습니다.
테스트 사례
진실한 사례
[0] [0]
[0,1,2,1] [0,1,1,3]
[0,1,1,3,3] [0,1,2,2,1]
[0,1,0,1,2,3,3,0] [0,0,2,1,0,4,2,1]
[0,1,2,3,1,2,3,0,8] [0,1,0,3,3,4,4,7,7]
거짓 인스턴스
[0,0] [0,1]
[0,1,2,0,3,3,4] [0,1,2,3,0,4,3]
[0,1,0,1,2,3,3,0] [0,0,2,1,0,5,2,1]
[0,1,1,0,1,3,2,1,5] [0,1,0,3,3,3,2,5,2]
[0,1,2,3,1,2,3,0,8] [0,1,0,1,4,4,5,6,6]
[0,1,0,2,0,3,0,4,0,5] [0,0,2,1,0,3,4,0,0,9]