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

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

트래픽 엔지니어링

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

요약
소유 여부에 따라 노드 비용이 0 또는 1인 이름 있는 호스트의 방향 네트워크에서, 각 출발지와 목적지 쌍의 최소 경로 비용을 구한다.
난이도

보통10점 중 5점

유형
그래프, 최단 경로, 힙, 구현
정답자
아직 제출이 없습니다

문제

ISP(인터넷 서비스 제공자)는 매우 얇은 이윤으로 운영되기 때문에, 네트워크 트래픽을 보낼 최적 경로를 고르는 것은 회사의 생존에 중요합니다. 데이터를 보내는 사람을 위해, 인터넷상의 두 호스트 사이에서 가장 저렴한 경로를 찾으세요.

각 노드(호스트)는 다음과 같은 비용을 가집니다.

  • 트래픽을 보내는 사람이 소유한 노드를 지나는 것은 사실상 공짜이므로 비용이 $0입니다.
  • 다른 사람이 소유한 노드를 지나는 것은 노드당 $1의 비용이 듭니다.

경로의 비용은 그 경로가 지나는 모든 노드의 비용을 더한 값이며, 출발지 노드와 도착지 노드도 비용에 포함됩니다. 방향이 있는 간선을 따라 출발지에서 도착지까지 이동할 수 있는 경로들 중에서 비용이 최소가 되는 값을 구하세요.

입력

입력은 여러 개의 네트워크로 이루어집니다. 각 네트워크는 다음 순서로 주어집니다.

  1. 이어지는 네트워크 링크의 개수를 나타내는 정수 하나.
  2. 그 개수만큼의 네트워크 링크. 각 링크는 두 이름의 쌍으로 주어지며, 첫 번째 이름에서 두 번째 이름으로 향하는 단방향(방향) 연결을 의미합니다.
  3. 트래픽을 보내는 사람이 소유한 노드의 개수를 나타내는 정수 하나, 그리고 이어서 그 개수만큼의 소유 노드 이름.
  4. 경로를 찾을 (출발지, 도착지) 쌍의 개수를 나타내는 정수 하나, 그리고 이어서 그 개수만큼의 노드 쌍. 각 쌍은 출발지가 먼저, 도착지가 나중에 주어집니다.

링크 개수가 0인 네트워크가 나오면 입력이 끝난 것이며, 그 네트워크는 처리하지 않습니다. 한 네트워크의 노드 수는 100개를 넘지 않습니다.

출력

각 (출발지, 도착지) 쌍마다, 그 패킷을 보내는 데 드는 최소 비용을 나타내는 정수를 한 줄에 하나씩 출력합니다. 소유한 노드는 비용이 0이고, 소유하지 않은 노드는 비용이 1입니다. 출발지와 도착지 노드도 비용에 포함됩니다. 모든 네트워크의 모든 질의에 대해, 입력에 등장한 순서대로 결과를 출력합니다.

예제5

  1. 예제 1

    입력
    5
    Alice Bob
    Bob Charlie
    Alice Charlie
    Charlie Dave
    Dave Alice
    2
    Alice
    Bob
    2
    Alice Bob
    Bob Alice
    0
    
    예상 출력
    0
    2
    
  2. 예제 2

    입력
    1
    A B
    1
    A
    1
    A A
    0
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1
    A B
    0
    1
    B B
    0
    
    예상 출력
    1
    
  4. 예제 4

    입력
    1
    A B
    1
    A
    1
    A B
    0
    
    예상 출력
    1
    
  5. 예제 5

    입력
    4
    S X
    X T
    S Y
    Y T
    1
    X
    1
    S T
    0
    
    예상 출력
    2