| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1.5 초 (하단 참고) | 512 MB | 163 | 58 | 50 | 34.247% |
노드가 $n$개인 트리 $T$가 있다. 노드는 $1$부터 $n$까지 번호가 붙어있고, 각 노드에는 영문 대문자 알파벳 ('A' - 'Z') 레이블이 붙어있다. Bob은 $T$에서 길이가 가장 긴 단순 경로를 찾는 문제에 관심이 많다. 단순 경로란, 그래프/트리의 같은 노드를 두 번 이상 방문하지 않는 경로를 말한다.
옆에서 지켜보던 Alice는 Bob에게 아래 정의에 따라 "좋은 단순 경로"를 찾아보라고 했다. 임의의 단순 경로 $P$에 대해, 만약 $P$에 속한 노드들의 레이블을 순서대로 나열하여 문자열을 만들었을 때 같은 알파벳이 연속으로 반복되지 않으면 $P$를 "좋은 단순 경로"라 한다.
예를 들어 위의 트리는 $7$개의 노드를 포함하고 있다.
AAZ"가 되어 'A'가 연속으로 반복되므로 "좋은 단순 경로"가 아니다.AXA"가 되고 같은 알파벳이 여러 번 등장하지만 연속으로 반복되지 않는다.Alice와 Bob은 $T$에서 가장 긴 좋은 단순 경로의 길이가 무엇인지, 그리고 가장 긴 좋은 단순 경로의 개수가 몇 개인지 궁금해졌다. 둘을 도와 이 문제를 풀어보자.
첫 줄에 테스트 케이스의 수 $T$가 주어진다
각 테스트 케이스는 세 줄에 걸쳐 주어진다. 첫 줄에 노드의 개수 $n$이 주어진다. 둘째 줄에 각 노드의 알파벳 레이블이 공백없이 길이 $n$인 문자열 형태로 주어진다. 셋째 줄에 각 노드의 부모 노드의 번호가 공백으로 구분되어 주어진다. 루트 노드의 부모는 $0$번으로 주어진다.
각 테스트 케이스의 정답인 두 정수를 공백으로 구분하여 각 줄에 출력한다.
첫 번째 정수는 가장 긴 좋은 단순 경로의 길이 (노드의 수)를 나타내고, 두 번째 수는 서로 다른 좋은 단순 경로의 개수를 나타낸다.
A' - 'Z')이다.6 7 AXAYABZ 0 1 2 1 1 5 5 7 QXZQQPZ 0 1 2 1 1 5 5 5 LGBOJ 4 4 4 0 4 5 AAABC 3 3 0 1 2 7 GGGGGGG 0 1 2 1 1 5 5 10 UUQYQYQQQU 3 8 8 8 2 8 3 0 6 8
4 1 3 2 3 6 2 2 1 7 5 1
예제 1: 본문에서 다루었다.
예제 2: 노드의 알파벳 레이블을 제외하면 예제 1의 트리와 구조가 같다. 길이가 $3$인 두 개의 좋은 단순 경로는: $1\to 2 \to 3$과 $6 \to 5 \to 7$이다.
예제 3: 이 트리의 길이 $3$인 모든 단순 경로가 좋은 단순 경로이다.
예제 4: $1 \to 4$와 $2 \to 5$ 두 개의 좋은 단순 경로가 가장 긴 단순 경로이다.
예제 5: 본문에서 언급된 것 처럼 길이가 $1$인 좋은 단순 경로도 존재할 수 있다.