페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
40000
ms
메모리 제한
1024
MB
세상에는 1부터 N까지 번호가 매겨진 N명의 사람이 있다. i번째 사람에게는 영문 대문자로 이루어진 서로 다른 이름 가 있다.
두 사람 각각의 이름에 적어도 한 번 등장하는 어떤 글자가 있을 때, 그리고 그럴 때에만 두 사람은 친구이다. 그러한 글자가 두 이름에서 같은 위치에 있을 필요는 없다. 결국 우정에는 공통점이 필요하다!
사람 A와 사람 B 사이의 길이가 n인 친구 관계 사슬은 사람들의 수열 , , ..., 이며, = A, = B이고 i=1부터 n-1까지 와 가 친구인 것을 말한다. 임의의 두 사람 사이에는 친구 관계 사슬이 없거나 여러 개 있을 수 있음에 유의하라.
주어진 Q개의 사람 쌍 각각에 대해, 두 사람 사이의 가장 짧은 친구 관계 사슬의 길이를 구할 수 있는가? 어떤 쌍 사이에 친구 관계 사슬이 없다면 -1을 출력한다.
시간 제한: 40초. 메모리 제한: 1 GB. 1 ≤ T ≤ 100. 1 ≤ Q ≤ 5 × . 모든 i에 대해 는 영문 대문자로 구성된다. 모든 i에 대해 1 ≤ 의 길이 ≤ 20. 모든 는 서로 다르다. 모든 i에 대해 1 ≤ < ≤ N.
2 ≤ N ≤ 100.
최대 10개의 케이스에서 < N ≤ 5 × . 그 밖의 모든 케이스에서 2 ≤ N ≤ .
입력의 첫 줄에는 테스트 케이스의 수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어진다. 각 테스트 케이스의 첫 줄에는 두 정수 N과 Q가 주어진다. 둘째 줄에는 사람들의 이름인 N개의 문자열이 주어진다. i번째 문자열은(1부터 시작) 이다. 이어지는 Q개의 줄에는 쿼리가 주어진다. 이 중 i번째 줄에는 이름 목록에 있는 한 사람 쌍의 인덱스(1부터 세기 시작)인 두 정수 와 가 주어진다.
각 테스트 케이스마다 Case #x: y를 포함하는 한 줄을 출력한다. 여기서 x는 테스트 케이스 번호이며(1부터 시작), y는 Q개 쿼리의 답을 순서대로 공백으로 구분한 목록이다.
2
5 2
LIZZIE KEVIN BOHDAN LALIT RUOYU
1 2
1 3
2 2
KICK START
1 2
1 2
Case #1: 2 3
Case #2: -1 -1
예제 케이스 #1에는 두 개의 쿼리가 있다.
첫 번째 쿼리에서 LIZZIE와 KEVIN는 친구이다(두 이름에 글자 E가 공통으로 있기 때문이다). 따라서 가장 짧은 친구 관계 사슬의 길이는 2이다.
두 번째 쿼리에서 LIZZIE와 BOHDAN는 친구가 아니지만, 가능한 가장 짧은 친구 관계 사슬이 두 개 있다(KEVIN 또는 LALIT를 거친다). 따라서 가장 짧은 친구 관계 사슬의 길이는 3이다. 다른 친구 관계 사슬도 있지만 더 길다는 점에 유의하라.
예제 케이스 #2에는 두 개의 쿼리가 있다.
첫 번째 쿼리에서 KICK와 START는 친구 관계 사슬로 연결되어 있지 않다.
두 번째 쿼리는 첫 번째 쿼리와 같다. 쿼리가 서로 다르다고 보장되지 않음에 유의하라.
Copyright Google LLC; sourced from the Google Coding Competitions Archive.
로그인 상태를 확인하는 중입니다.