광학 통신
면접 대비시간 제한1초메모리 제한512 MB
가시성 그래프에서 간선이 추가되거나 삭제되는 상황을 처리하면서, 보낸 메시지를 현재 보이는 이웃으로 전파하고 각 생존자가 받은 메시지를 순서대로 출력한다.
문제
비행기가 추락한 뒤 살아남은 승객 71명이 무인도에 고립된다. 이들은 섬을 탐사하기 시작하고, 탐사를 돕기 위해 장거리 통신 전략을 세운다. 잔해에서 찾은 거울로 햇빛을 반사해 모스 부호를 보낸다. 하지만 이 방법으로는 가시거리 안에서만 통신할 수 있다.
섬에는 대부분의 지역을 볼 수 있는 좋은 전망 지점이 몇 곳 있고, 이런 지점은 메시지를 중계하는 데 아주 유용하다. 각 전망 지점에는 항상 한 명의 생존자가 지키는 초소가 있다. 이 생존자는 새 메시지를 보내고, 받은 메시지를 볼 수 있는 다른 모든 초소로 중계한다. 초소가 이미 보냈거나 받은 메시지를 다시 받으면 무시하고 다시 받은 것으로 세지 않는다(생존자들은 메시지를 식별하는 방법을 마련해 두었다).
나무나 산 같은 장애물, 비나 안개 같은 날씨 때문에 메시지를 직접 볼 수 있는 생존자의 집합은 때때로 바뀐다. 각 상황에서 각 생존자가 받은 메시지 목록을 출력하는 프로그램을 작성하시오. 각 테스트 케이스가 시작될 때 아무도 다른 사람의 메시지를 볼 수 없다고 가정한다.
입력
첫 줄에는 테스트 케이스의 수 T가 주어진다(1 ≤ T ≤ 50).
각 테스트 케이스의 첫 줄에는 이벤트의 수 E가 주어진다(1 ≤ E ≤ 50). 다음 E개 줄에는 다음 중 하나가 주어진다.
VISIBLE A B: 생존자A와 생존자B가 서로를 볼 수 있다.OBSTACLE A B: 장애물 때문에 생존자A와 생존자B가 더 이상 서로를 볼 수 없다.WEATHER A B: 날씨 때문에 생존자A와 생존자B가 더 이상 서로를 볼 수 없다.MESSAGE A "HELLO": 생존자A가 메시지HELLO를 볼 수 있는 다른 모든 초소로 보낸다.
각 생존자는 A-Z 중 한 문자로 나타낸다.
각 메시지는 A-Z와 공백 문자로 이루어진 1자 이상 100자 이하의 문자열이다. 항상 한 쌍의 큰따옴표(")로 둘러싸여 있다.
출력
각 테스트 케이스마다 메시지를 받은 생존자마다 한 줄을 출력한다. 생존자의 문자를 기준으로 알파벳 순으로 정렬한다.
각 줄은 A: ["MSG I", "MSG II"] 형식이다. 여기서 A는 메시지를 받은 생존자의 문자이고, "MSG I", "MSG II"는 그 생존자가 받은 메시지 목록(각각 따옴표로 감쌈)을 쉼표와 공백으로 구분한 것이다. 메시지를 하나도 받지 않은 생존자에 대해서는 줄을 출력하지 않는다.
각 생존자가 받은 메시지는 받은 순서대로 출력한다.
테스트 케이스 사이에는 빈 줄 하나를 출력한다.