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

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

광섬유 네트워크

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

요약
각 간선에 여러 회사가 표시된 방향 그래프에서, 자기 간선만 사용해 A에서 B로 가는 경로가 있는 회사를 모두 찾아 알파벳 순으로 출력한다.
난이도

보통10점 중 6점

유형
그래프, BFS, DFS, 비트 연산
정답자
아직 제출이 없습니다

문제

여러 스타트업 회사가 더 나은 인터넷인 "파이버넷(FiberNet)"을 구축하기로 했습니다. 이들은 이미 전 세계에 라우터 역할을 하는 노드를 많이 설치했습니다. 그러나 연결 회선을 두고 다투게 되었고, 결국 각 회사가 일부 노드 사이에 자신만의 케이블을 따로 설치하게 되었습니다.

이제 노드 AA에서 노드 BB로 데이터를 보내려는 서비스 제공자들은 어떤 회사가 필요한 연결을 제공할 수 있는지 알고 싶어 합니다. 각 질의에 답하여 이들을 도와주세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스는 네트워크의 노드 수 nn으로 시작합니다. n=0n = 0이면 입력이 종료됩니다. 그렇지 않으면 1≤n≤2001 \le n \le 200이며, 노드에는 1,…,n1, \dots, n의 번호가 붙습니다.

그 다음에는 연결 목록이 이어집니다. 각 연결은 두 정수 AA, BB로 시작합니다. 연결 목록은 A=B=0A = B = 0으로 종료됩니다. 그렇지 않으면 1≤A,B≤n1 \le A, B \le n이며, 각각 단방향(유향) 연결의 시작 노드와 끝 노드를 나타냅니다. 각 연결에서 두 노드 뒤에는 노드 AA에서 노드 BB로 가는 연결을 가진 회사들이 이어집니다. 각 회사는 하나의 소문자로 구분되며, 그 연결을 가진 회사들의 집합은 소문자로만 이루어진 하나의 단어로 주어집니다.

연결 목록 다음에는 질의 목록이 이어지고, 이것으로 테스트 케이스가 끝납니다. 각 질의는 두 정수 AA, BB로 이루어집니다. 질의 목록(그리고 그 테스트 케이스)은 A=B=0A = B = 0으로 종료됩니다. 그렇지 않으면 1≤A,B≤n1 \le A, B \le n이며, 각각 질의의 시작 노드와 끝 노드를 나타냅니다. 어떤 연결이나 질의도 시작 노드와 끝 노드가 같지 않다고 가정해도 됩니다.

출력

각 테스트 케이스의 각 질의마다, 자신의 연결만을 사용하여 질의의 시작 노드에서 끝 노드로 데이터 패킷을 전달할 수 있는 모든 회사의 식별자를 한 줄에 출력합니다. 식별자는 알파벳 오름차순으로 구분자 없이 이어 붙여 출력합니다. 그러한 회사가 하나도 없으면 대신 -를 출력합니다. 각 테스트 케이스 뒤에는 빈 줄을 하나 출력합니다.

예제1

  1. 예제 1

    입력
    3
    1 2 abc
    2 3 ad
    1 3 b
    3 1 de
    0 0
    1 3
    2 1
    3 2
    0 0
    2
    1 2 z
    0 0
    1 2
    2 1
    0 0
    0
    
    예상 출력
    ab
    d
    -
    
    z
    -