King & Weber

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

요약
도로 쌍의 평행/교차 관찰이 주어질 때 일관성을 확인하고, 각 질의에 대해 두 도로가 반드시 평행한지, 반드시 교차하는지, 아니면 둘 다 가능한지 답한다.
난이도

보통10점 중 7점

유형
그래프, 유니온 파인드, BFS, 구현
정답자
아직 제출이 없습니다

문제

키치너-워털루(Kitchener-Waterloo)에서는 길을 잃기 쉽습니다. 거의 평행해 보이는 많은 거리가 실제로는 서로 교차하며, 때로는 여러 번 교차하기도 합니다. 가장 잘 알려진 예가 King 가와 Weber 가입니다. 그 밖에도 Westmount와 Fischer-Hallman, University와 Erb, Queen과 Highland 같은 예가 있습니다.

"맨해튼 가정(Manhattan Assumption)"을 따르는 도시에서는 길 찾기가 더 쉽습니다. 이 가정에 따르면 모든 거리는 유클리드 평면 위의 직선이며, 임의의 두 거리는 서로 평행하거나 수직입니다. (맨해튼조차도 이 가정을 완전히 만족하지는 않는다는 점에 유의하세요.)

프로그램의 입력은 특정 도시에 대한 여러 개의 관찰(observation)과 그에 이어지는 여러 개의 질의(query)로 이루어집니다. 각 관찰은 두 거리가 평행하다는 사실 또는 두 거리가 교차한다는 사실을 알려 줍니다. 각 질의는 도시가 맨해튼 가정을 만족한다고 할 때 두 거리가 평행한지 아니면 교차하는지를 묻습니다.

입력

첫째 줄에 두 정수 mm과 nn이 주어집니다 (1≤m,n≤1000001 \le m, n \le 100000).

이어지는 mm개의 줄에는 각각 하나의 관찰이 주어집니다. 각 관찰은 공백으로 구분된 세 단어, 즉 두 거리 이름과 단어 parallel(평행) 또는 intersect(교차)로 이루어집니다.

각 거리 이름은 100자 이하의 영문 대문자 또는 소문자로 이루어진 문자열이며, 이름은 대소문자를 구별합니다.

관찰 다음에는 nn개의 질의가 각각 한 줄에 하나씩 주어집니다. 각 질의는 공백으로 구분된 두 거리 이름으로 이루어집니다.

출력

주어진 관찰과 맨해튼 가정을 도시가 동시에 만족하는 것이 불가능하다면, Waterloo라는 단어가 적힌 한 줄을 출력합니다.

그렇지 않다면 nn개의 질의에 대한 답을 nn개의 줄에 출력합니다. 각 답은 다음 세 단어 중 하나입니다: parallel, intersect, unknown.

  • 주어진 관찰과 맨해튼 가정을 만족하는 모든 도시에서 두 거리가 항상 평행하다면 parallel을 출력합니다.
  • 그러한 모든 도시에서 두 거리가 항상 수직(교차)이라면 intersect를 출력합니다.
  • 어떤 도시에서는 평행하고 다른 도시에서는 수직이라면 unknown을 출력합니다.

예제5

  1. 예제 1

    입력
    3 3
    fourthstreet fifthstreet parallel
    fifthstreet sixthstreet parallel
    fourthavenue fifthstreet intersect
    sixthstreet fourthstreet
    sixthstreet fourthavenue
    sixthstreet King
    
    예상 출력
    parallel
    intersect
    unknown
    
  2. 예제 2

    입력
    2 1
    King Weber parallel
    King Weber intersect
    King Weber
    
    예상 출력
    Waterloo
    
  3. 예제 3

    입력
    1 1
    a b intersect
    a b
    
    예상 출력
    intersect
    
  4. 예제 4

    입력
    2 1
    a b parallel
    b c parallel
    a c
    
    예상 출력
    parallel
    
  5. 예제 5

    입력
    1 1
    a b parallel
    x y
    
    예상 출력
    unknown