여러분은 마비노기의 새로운 던전을 디자인하는 개발자이다. 현재, 여러분은 던전의 밸런스를 맞추기 위해 고심하고 있다.
던전은 개의 방으로 구성되어 있으며, 개의 복도가 서로 다른 두 방을 양방향으로 연결한다. 각 방에는 부터 까지의 번호가 붙어 있다. 방들은 두 종류로 나뉘는데, 몬스터를 처치해야 하는 방과 보상 상자가 있는 방이다. 던전의 모든 방은 하나 이상의 복도를 통해 서로 연결되어 있으며, 두 방 사이에는 최대 하나의 복도만 존재한다.
이 던전의 특징은 플레이어가 입장하면, 무작위로 선택된 방에서 시작한다는 점이다. 플레이어는 무작위로 선택된 방에서 시작하여 복도를 통해 이동하며, 시작한 방을 포함하여 이미 방문한 방은 다시 방문하지 않는다.
여러분은 플레이어가 두 개 이상의 방을 방문한 어떠한 순간에도, 지금까지 방문한 방 중 보상 상자가 있는 방의 수가 몬스터가 있는 방의 수보다 많아지지 않기를 원한다. 이는 보상이 너무 많으면 플레이어들이 느끼는 재미가 반감될 수 있기 때문이다. 현재 던전은 이 조건을 만족하지 않을 수 있으므로, 새로운 방을 추가하여 이 조건을 만족해야 한다.
여러분은 기존 복도 위에 하나 이상의 방을 추가할 수 있다. 새로 추가된 방은 몬스터가 있는 방이거나 보상 상자가 있는 방이어야 한다. 예를 들어, 번 방과 번 방을 연결하는 복도 위에 세 개의 방 , , 를 새로 추가하면, 와 같은 형태가 된다.
던전의 초기 상태를 나타내는 개의 방과 개의 복도에 대한 정보가 주어졌을 때, 문제의 조건을 만족하기 위해 추가해야 하는 방의 최소 개수를 출력하는 프로그램을 작성하라.
첫 줄에 방의 수를 나타내는 정수 과 복도의 수를 나타내는 정수 이 공백으로 구분되어 주어진다. ( )
그다음 줄에 알파벳 대문자 A
와 B
로 구성된 길이 인 문자열 가 주어진다. 의
번째 문자는 번 방의 종류를 나타낸다. 문자가 A
인 경우
해당 방에는 보상 상자가 있으며 B
인 경우 몬스터가 있음을 의미한다.
이어지는 개의 줄의 번째 줄에는 번째 복도에 대한 정보를 나타내는 두 정수 와 가 공백으로 구분되어 주어진다. 이는 번째 복도가 번 방과 번 방을 잇는다는 것을 의미한다. (; )
첫 줄에 문제의 조건을 만족하기 위해 추가해야 하는 방의 최소 개수를 출력한다.
3 2 ABA 1 2 2 3
1
4 6 BBBA 1 2 1 3 1 4 2 3 2 4 3 4
0
입력 예제 1에서, 번 방과 번 방을 연결하는 복도 위에 몬스터가 있는 방을 하나 추가하면 문제의 조건을 만족한다.
입력 예제 2에서는 이미 문제의 조건을 만족하여 방을 추가할 필요가 없다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 13점
종류 2: 15점
종류 3: 9점
는 A
로만 구성됨.
종류 4: 21점
종류 5: 42점
추가적인 제한 조건이 없음.