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

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

네트워크 전쟁

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

요약
레이블이 붙은 그래프에서 한 프로그램은 알파벳 순방향으로, 다른 프로그램은 역방향으로 이동하며, 하나가 갇히거나 소멸할 때까지 모의실험한다.
난이도

보통10점 중 6점

유형
그래프, 시뮬레이션, 구현, 문자열 매칭
정답자
아직 제출이 없습니다

문제

때는 2126년, 예언대로 스위프트-터틀 혜성이 지구와 충돌한다. 그 폭발로 고에너지 중성자 구름이 퍼지면서 모든 인류가 사라진다. 뒤이은 전자기 폭풍은 두 가지 특이한 사건을 일으킨다. 전자 네트워크의 여러 부분을 잇던 링크가 다수 끊기고, 몇몇 대학원 인공지능 프로젝트가 마치 수백만 년 전 동물이 그랬던 것처럼 서로 합쳐지고 변이하기 시작한다. 아주 짧은 시간 안에 두 프로그램 Paskill과 Lisper가 출현하여, 네트워크를 돌아다니며 자신이 방문한 노드마다 표시를 남긴다. Paskill은 변형된 Prolog 인터프리터를 실행하고, Lisper는 "Hello World" 프로그램을 실행한다. 그런데 "Hello World"는 무한 루프로 변이하여, 그 노드를 완전히 점유해 버려 어떤 프로그램도(Lisper 자신조차) 그 노드에 다시 들어갈 수 없게 만든다. 한편 Prolog 인터프리터는 자신이 있는 노드로 들어오는 어떤 프로그램이든 즉시 역컴파일하여 파괴한다. 다만 Paskill은 자신이 방문한 노드를 모두 기억하므로 그 노드에 다시 들어가려 하지 않는다. 따라서 Lisper가 Paskill이 이미 방문한 노드에 들어가려 하면 소멸되고, 두 프로그램 모두 Lisper가 이미 방문한 노드에는 들어갈 수 없다. 둘 중 하나라도(또는 둘 다) 움직일 수 없으면 둘 다 멈춘다. 그리고 둘이 같은 노드에 동시에 도착하면 서로를 소멸시킨다. 두 프로그램은 같은 속도로 움직인다.

이 과정을 시뮬레이션하는 프로그램을 작성하라. 네트워크의 모든 노드는 아래 그림처럼 하나의 대문자로 표시된다. 다음 노드로 이동할 때 Paskill은 현재 노드에서 알파벳 순으로 앞쪽을 탐색하고, Lisper는 알파벳 순으로 뒤쪽을 탐색하며, 필요하면 양쪽 모두 끝에서 처음으로 순환한다. 예를 들어 (상대가 없다고 할 때) Paskill이 아래 네트워크의 A에서 출발하면 A, B, C, D, G, H, E, F 순서로 노드를 방문하고, Lisper가 H에서 출발하면 H, G, E, F 순서로 방문한다. 위 사건 중 하나 이상이 일어나면 시뮬레이션을 멈춘다. 사건이 둘 이상 일어나면 Paskill을 먼저 언급한다.

입력

입력은 여러 줄로 이루어진다. 각 줄은 하나의 네트워크와 두 프로그램의 시작 노드를 기술한다. 네트워크는 ';'로 구분된 노드들의 나열로 표현하며 마침표('.')로 끝난다. 각 노드는 식별자, ':', 그리고 그 노드에 연결된 하나 이상의 노드로 기술한다. 모든 링크는 적어도 한 번 언급되며 모든 노드도 마찬가지지만, 모든 노드가 반드시 별도로 '기술'되는 것은 아니다. 마침표 뒤에는 시작 노드의 이름이 나오는데, 먼저 Paskill, 그다음 Lisper이다. 한 줄은 255자를 넘지 않는다. 입력은 '#' 하나만 있는 줄로 끝난다.

출력

출력은 각 네트워크마다 한 줄이다. 각 줄은 종료를 일으킨 사건과 그 사건이 일어난 노드를 명시한다. 종료 사건은 다음 중 하나 또는 둘이다.

  • Lisper destroyed in node ?
  • {Paskill/Lisper} trapped in node ?
  • Both annihilated in node ?

예제1

  1. 예제 1

    입력
    A:BD;C:BD;F:E;G:DEH;H:EG. A H
    E:AB. A B
    B:ACD. B D
    A:B;B:C;D:E. A D
    #
    
    예상 출력
    Paskill trapped in node D Lisper trapped in node F
    Both annihilated in node E
    Lisper destroyed in node B
    Lisper trapped in node E