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

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

Alias

면접 대비

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

요약
단어 n개와 간선 m개로 이루어진 가중 방향 그래프가 주어질 때, 단어 a를 말한 뒤 단어 b를 처음 떠올리는 최소 시간을 묻는 질의 q개에 답하고, 도달할 수 없으면 Roger를 출력한다.
난이도

보통10점 중 5점

유형
그래프, 최단 경로, 해시맵, 문자열
정답자
아직 제출이 없습니다

문제

Novak과 Rafael은 게임 Alias의 간단한 버전을 한다. Novak은 단어를 직접 말하지 않고 Rafael이 그 단어를 맞히게 해야 한다. Rafael의 머릿속에는 n개의 단어로 이루어진 데이터베이스가 있고, 일부 단어 사이에는 m개의 연결이 있다. 단어 x와 y 사이의 시간 t짜리 연결은 Rafael이 단어 x를 기억하거나 듣고 나면 t밀리초 뒤에 단어 y를 기억하게 된다는 뜻이다.

Novak과 Rafael은 q라운드를 한다. 각 라운드에서 Novak은 알고 싶어 한다. 그가 단어 a를 말하면 Rafael은 몇 밀리초 뒤에 단어 b를 처음으로 기억하게 되는가? 각 라운드는 서로 독립적이다.

입력

첫째 줄에는 정수 n (2 ≤ n ≤ 1000)과 m (1 ≤ m ≤ 1000)이 주어진다. 이는 단어의 수와 연결의 수이다.

다음 m개 줄에는 각각 서로 다른 두 단어 xi와 yi, 그리고 정수 ti (1 ≤ ti ≤ 109)가 주어지며, 하나의 연결을 나타낸다. 단어는 최대 20개의 소문자로 이루어진다. Rafael의 데이터베이스에 있는 모든 단어는 적어도 한 번 등장한다. 어떤 단어 쌍 사이에 여러 개의 연결이 있을 수 있다.

다음 줄에는 정수 q (1 ≤ q ≤ 1000)가 주어진다. 이는 라운드의 수이다.

다음 q개 줄에는 각각 서로 다른 두 단어 ai와 bi가 주어진다. 이는 i번째 라운드에서 Novak이 말할 단어와 Rafael이 기억해야 하는 단어이다. 두 단어 모두 Rafael의 데이터베이스에 등장한다.

출력

q개 줄을 출력한다. i번째 줄에는 i번째 라운드의 시간을 밀리초 단위로 출력하거나, Rafael이 그 단어를 영영 기억하지 못하면 Roger를 출력한다.

예제3

  1. 예제 1

    입력
    3 2
    novak goat 1
    goat simulator 3
    2
    novak simulator
    simulator goat
    
    예상 출력
    4
    Roger
    
  2. 예제 2

    입력
    3 3
    kile legend 4
    legend beer 5
    beer kile 6
    2
    kile beer
    legend kile
    
    예상 출력
    9
    11
    
  3. 예제 3

    입력
    4 5
    rafael me 5
    me ow 6
    ow ausopenfinal 2012
    ausopenfinal me 2
    rafael ausopenfinal 2
    3
    rafael me
    me rafael
    ow me
    
    예상 출력
    4
    Roger
    2014