트리 합치기

왼손 ternary 트리와 오른손 ternary 트리가 주어질 때, 두 트리를 겹쳐 만든 ternary 트리가 가질 수 있는 최소 정점 수를 구한다.

보통7트리동적 계획법재귀아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

컴퓨팅에서 트리는 위아래가 뒤집힌 그림으로 그린다. 루트가 맨 위에 있고 잎이 맨 아래에 있다. 트리는 NN개의 정점이 N1N-1개의 간선으로 연결된 자료구조이고, 한 정점에서 간선을 따라가면 나머지 모든 정점에 도달한다. 루트가 있는 트리에서는 각 간선이 부모 정점과 자식 정점을 잇는다. 부모가 없는 정점이 딱 하나 있고, 이 정점을 루트라고 한다. 루트에서 출발해 부모에서 자식 방향으로 간선을 따라가면 트리의 나머지 모든 정점에 도달한다.

삼진 트리에서는 각 정점에 왼쪽, 가운데, 오른쪽이라고 부르는 자식이 최대 세 개까지 붙는다. 왼손 삼진 트리는 오른쪽 자식이 붙은 정점이 하나도 없는 삼진 트리이고, 오른손 삼진 트리는 왼쪽 자식이 붙은 정점이 하나도 없는 삼진 트리다. 삼진 트리의 루트는 언제나 가운데 정점이다. 아래 그림은 왼손 트리와 오른손 트리의 예다.

왼손 트리 CC와 오른손 트리 DD중첩 SS는 다음 두 조건을 만족하는 삼진 트리다. 첫째, SS의 루트는 CC의 루트이거나 DD의 루트이거나 두 루트를 겹쳐 놓은 정점이다. 둘째, SS는 두 트리의 구조를 모두 담는다. 아래 그림은 위 그림의 왼손 트리와 오른손 트리를 중첩해서 만든 트리 몇 개다.

그림 (a)에서 루트는 오른손 트리의 정점 xx이고, 정점 쌍 (a,y)(a, y)(c,u)(c, u)가 겹쳐져 있다. 그림 (b)에서 루트는 왼손 트리의 정점 aa이고, 정점 쌍 (d,x)(d, x), (e,y)(e, y), (f,u)(f, u)가 겹쳐져 있다. 그림 (c)에서도 루트는 왼손 트리의 정점 aa이고, 정점 쌍 (f,x)(f, x)가 겹쳐져 있다.

왼손 트리와 오른손 트리가 주어진다. 두 트리의 중첩인 삼진 트리를 만드는 데 필요한 정점의 최소 개수를 구하라.

입력

첫째 줄에 왼손 트리의 정점 개수 NN이 주어진다. 이 트리의 정점은 11번부터 NN번까지의 번호로 구분하고, 루트는 11번 정점이다. 이어지는 NN개의 줄에는 각각 세 정수 II, LL, KK가 주어진다. 정점 II의 왼쪽 자식이 LL, 가운데 자식이 KK라는 뜻이다.

그다음 줄에 오른손 트리의 정점 개수 MM이 주어진다. 이 트리의 정점도 11번부터 MM번까지의 번호로 구분하고, 루트는 11번 정점이다. 이어지는 MM개의 줄에는 각각 세 정수 PP, QQ, RR가 주어진다. 정점 PP의 가운데 자식이 QQ, 오른쪽 자식이 RR라는 뜻이다.

00은 그 자리에 자식이 없다는 뜻이다. 정점을 설명하는 줄은 번호 순서대로 주어지지 않는다.

제약

  • 1N1041 \le N \le 10^4
  • 0I,L,KN0 \le I, L, K \le N
  • 1M1041 \le M \le 10^4
  • 0P,Q,RM0 \le P, Q, R \le M

출력

입력으로 주어진 두 트리의 중첩인 트리가 가질 수 있는 정점의 최소 개수를 한 줄에 출력한다.