Alias
면접 대비시간 제한1초메모리 제한512 MB
단어 n개와 간선 m개로 이루어진 가중 방향 그래프가 주어질 때, 단어 a를 말한 뒤 단어 b를 처음 떠올리는 최소 시간을 묻는 질의 q개에 답하고, 도달할 수 없으면 Roger를 출력한다.
문제
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를 출력한다.