Два посла на конференции ООН хотят говорить друг с другом, но, к сожалению, каждый говорит только на одном языке - и они не на одном языке. К счастью, у них есть доступ к нескольким переводчикам, каждый из которых понимает и говорит на нескольких языках. Ваша задача - определить самую короткую цепочку переводчиков (поскольку вы хотите, чтобы при переводе было как можно меньше потерь), чтобы два посла могли говорить друг с другом.
кодирование
Ввод: два языка в виде двухбуквенных строчных букв (язык каждого посла) и список списков языков (один список для каждого доступного переводчика)
Вы также можете взять целые числа вместо двухбуквенных кодов.
Вывод: Последовательность переводчиков по индексу или значению, представляющая собой одну из самых коротких цепочек переводчиков, которая позволяет двум послам общаться. Если нет допустимой цепочки переводчиков, поведение не определено. (Вы можете потерпеть крах, вывести любое произвольное значение или указать ошибку)
Действительная цепочка переводчиков - это та, в которой первый переводчик говорит на языке одного посла, второй и последующие переводчики говорят по крайней мере на одном языке с предыдущим переводчиком, а последний переводчик говорит на языке другого посла.
Примеры
Использование индексации с нуля:
es, en, [
[es, en]
] ==> [0]
en, en, [] ==> []
en, jp, [
[en, zh, ko, de],
[jp, ko]
] ==> [0, 1]
es, ru, [
[gu, en, py],
[po, py, ru],
[po, es]
] ==> [2, 1]
fr, gu, [
[it, fr, de, es, po, jp],
[en, ru, zh, ko],
[jp, th, en],
[th, gu]
] ==> [0, 2, 3]
fr, ru, [
[fr, en],
[en, ko, jp],
[en, ru]
] ==> [0, 2]
de, jp, [
[en, fr],
[ko, jp, zh],
[fr, po],
[es, ko, zh],
[de, en, th],
[en, es],
[de, fr]
] ==> [4, 5, 3, 1]
Правила и предположения
- Применяются стандартные правила ввода-вывода (используйте любой удобный формат ввода-вывода) и запрещенные лазейки.
- Вы можете предположить, что говорение и понимание языков абсолютно симметричны и что все возможные переводы между языками одинаково эффективны.
- Не существует понятия «достаточно близких» языков. Например, недостаточно хорошо использовать португальский на одном конце, где требуется испанский.
- Если существует несколько кратчайших цепочек переводчиков, подойдет любая из них.
- Если послы говорят на одном языке, список переводчиков должен быть пустым
- Кто из послов первый, не имеет значения; список переводчиков может быть прямым или обратным.
- Послы говорят только на одном языке ради этого вызова
- Переводчики говорят как минимум на двух языках
- Двухбуквенные языковые коды не должны соответствовать реальным языкам
- Вы можете предположить, что существует правильная последовательность переводчиков
- Если вы выводите последовательность по значению, включите полный набор доступных языков, а не только соответствующие.
Счастливого гольфа!
en,fr,sp;en,gr;gr,fr