아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

광학 통신

면접 대비

시간 제한1초메모리 제한512 MB

요약
가시성 그래프에서 간선이 추가되거나 삭제되는 상황을 처리하면서, 보낸 메시지를 현재 보이는 이웃으로 전파하고 각 생존자가 받은 메시지를 순서대로 출력한다.
난이도

보통10점 중 4점

유형
그래프, BFS, 시뮬레이션, 해시맵
정답자
아직 제출이 없습니다

문제

비행기가 추락한 뒤 살아남은 승객 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"는 그 생존자가 받은 메시지 목록(각각 따옴표로 감쌈)을 쉼표와 공백으로 구분한 것이다. 메시지를 하나도 받지 않은 생존자에 대해서는 줄을 출력하지 않는다.

각 생존자가 받은 메시지는 받은 순서대로 출력한다.

테스트 케이스 사이에는 빈 줄 하나를 출력한다.

예제1

  1. 예제 1

    입력
    2
    6
    VISIBLE B A
    MESSAGE A "HELLO"
    WEATHER A B
    MESSAGE A "GOODBYE"
    VISIBLE A B
    MESSAGE A "WORLD"
    11
    VISIBLE B A
    VISIBLE C A
    VISIBLE D A
    VISIBLE E A
    VISIBLE F A
    VISIBLE G H
    MESSAGE A "YOU"
    MESSAGE B "ARE"
    OBSTACLE B A
    MESSAGE C "NOT"
    MESSAGE G "ALONE"
    
    예상 출력
    B: ["HELLO", "WORLD"]
    
    A: ["ARE", "NOT"]
    B: ["YOU"]
    C: ["YOU", "ARE"]
    D: ["YOU", "ARE", "NOT"]
    E: ["YOU", "ARE", "NOT"]
    F: ["YOU", "ARE", "NOT"]
    H: ["ALONE"]