DIPLOMAT

  • Дипломат
    DIPLOMAT

На конференцию приглашены по одному дипломату из N разных стран мира. Каждый дипломат знает не менее одного языка. Дипломаты, которые не знают общего языка не могут разговаривать друг с другом. К тому же некоторые страны заявили, что не будут поддерживать дипломатических отношений с некоторыми другими странами, то есть представители этих стран не будут разговаривать друг с другом. Эти условия представлены текстовым файлом DIPLOMAT.DAT такого вида:

  • В первой строке - число N. 

  • Далее N строк, по одной строке на дипломата. Каждая строка - последовательность слов. Соседние слова разделены пробелом. Каждое слово - это последовательность больших латинских букв. Первое слово, код страны, состоит из трех букв. Второе слово представляет перечень языков, на которых может общаться дипломат. Каждый язык обозначен одной буквой. 

  • Далее идет список из не более чем N трехбуквенных слов - кодов стран, с которыми правительство дипломата поддерживает отношения. (N<=12).

Составьте программу DIPLOMAT, результат работы которой:

  1. Для данного языка L подсчитать количество дипломатов, владеющих эти языком. (2 балла)

  2. Для данной страны C подсчитать количество дипломатов, которые не могут общаться с дипломатом этой страны. (6 баллов)

  3. Определить общее количество языков на конференции. (4 балла)

  4. Определить наиболее "популярный" язык конференции, то есть язык, которым владеет наибольшее количество дипломатов. (6 баллов)

  5. Определить самого "несговорчивого" дипломата, то есть дипломата, который может общаться с наименьшим количеством коллег. (8 баллов)

  6. Для данных трех стран X, Y и Z выяснить, могут ли дипломаты этих стран образовать комитет так, чтобы каждый из трех дипломатов мог общаться с двумя другими. (4 балла)

  7. Распределить всех дипломатов по комитетам из трех членов (если это возможно), на условиях п. 6, при дополнительном условии, что каждый дипломат обязательно должен попасть только в один комитет. (15 баллов)

  8. Определить места за столом для дипломатов таким образом, чтобы каждый мог разговаривать с обоими своими соседями, которые сидят слева и справа от него. Используемый стол - круглый и рассчитан на N персон. Дипломат может общаться с дипломатом, сидящим слева на одном языке, а с дипломатом, сидящим справа - на другом. Если возможно существование нескольких решений, то необходимо найти одно из них. (30 баллов)

Технические характеристики:

Входные данные:

Кроме файла DIPLOMAT.DAT, данные для задачи содержатся в файле KONF.DAT такого формата:
Первая строка содержит одну букву - язык L (для п.1);
Вторая строка содержит слово из трех букв - код страны C (для п.2);
Третья строка содержит три кода стран X, Y, Z, разделенных пробелами (для п.6).

Выходные данные:

В файл STAT.SOL требуется вывести результаты п.п. 1-7 в таком формате:
В первую строку - одно число - ответ на п.1.
Во вторую строку - одно число - ответ на п.2.
В третью строку - одно число - ответ на п.3.
В четвертую строку - букву, которая обозначает язык из п.4, а также, после пробела, число - количество дипломатов, владеющих этим языком.
В пятую строку - код страны дипломата из п.5.
В шестую строку - букву Y, если ответ на вопрос п.6 положителен, или букву N, если отрицателен.
В седьмую строку вывести букву N, если распределение из п.7 невозможно, или букву Y, если возможно, тогда в следующих строках вывести по три кода стран, образовавших комитеты, разделенные пробелами: по одному комитету на строку.

Если ответ на некоторый пункт задания не найден, то соответствующая строка файла STAT.SOL должна быть пустой

В файл DIPLOMAT.SOL необходимо вывести решение для п.8 - список дипломатов в порядке размещения за столом (по одному дипломату в строке). Каждая строка состоит из трех слов: 

  • первое - код языка, на котором дипломат может общаться с соседом слева;

  • второе - код страны дипломата;

  • третье - код языка, для общения с соседом справа. Если решения нет, то программа должна выводить в единственную строку файла DIPLOMAT.SOL такое сообщение: NO SOLUTION EXISTS

Пример:

DIPLOMAT.DAT
4
USA EF FRA UKR
FRA FJU USA JPN UKR
JPN JE FRA UKR
UKR JURE USA JPN


KONF.DAT

J
UKR
USA UKR JPN


STAT.SOL

3
0
5
J 3
USA
N
N


DIPLOMAT.SOL

E USA F
F FRA J
J JPN E
E UKR E