eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Кольорова карта

Кольорова карта

Ви були досить везучими, щоб отримати карту при вході у легендарний таємничий чарівний світ. На карті показано усі території запланованого дослідження, у тому числі ряд країн зі складними кордонами. Карта чітко прорисована, але сірими чорнилами, і тому важко з поршого погляду визначити, яка область належить до якої країни, а це може призвести вас до серйозних наслідків. Ви вирішили розфарбувати карту перед тим як поринути у таємничий світ. "\textit{Багато залежить від підготовки}", не раз ви казали собі. Кожна країна має одну чи декілька територій, кожна з яких має полігональну форму. Території, які належать одній країні можуть дотикатись, а можуть і не дотикатись одна до одної, тобто можуть бути роз'єднані території. Усім територіям, які належать одній і тій же країні, потріьно надати один і той же колір. Більше того, ви можете надати один колір і більше ніж одній країні, але, щоб уникнути плутаниці, двом сусіднім різним країнам потрібно надати різні кольори. Дві країни вважаються \textit{сусідніми}, якщо довільною частиною своїх територій мають спільну границю ненульової довжини. Напишіть програму, яка знаходить найменшу кількість кольорів, необхідних для розфарбування карти. \InputFile Вхідні дані складаються з декількох картографічних даних. Кожна задана карта починається з рядка, який містить загальну кількість територій \textbf{n}, після чого дані для цих територій. \textbf{n} - натуральне число, не більше за \textbf{100}. Дані про території з \textbf{m} вершин мають наступний формат: \textbf{String x1 y1 x2 y2 : : : xm ym -1} "\textbf{String}" (послідовність алфавітно-цифрових символів) задає назву країни, якій він належить. Назва країни має по меншій мірі один символ і ніколи не буде більше двадцяти. Коли у країні є декілька територій, її ім'я з'явиться у кожному з її описів. Інші рядки задають вершини території. Вершина у рядку даних подається парою невід'ємних цілих чисел, які задають \textbf{х}- та \textbf{у}-координати вершини. \textbf{х}- та \textbf{у}-координати відокремлено пропуском, і після \textbf{у}-координати відразу йде переведення рядка. Границі кожної території отримуються шляхом з'єднання сусідніх вершин, а також першої та останньої вершини. Жодна з \textbf{х}- та \textbf{у}-координат не перевищує \textbf{1000}. Єдине число \textbf{-1} у рядку означає завершення перерахування вершин. Кількість вершин \textbf{m} не перевищує \textbf{100}. Можно вважати, що контури полігонів прості, тобто вони не перетинаються і дотикаються самі до себе. Немає двох многокутників, які розділяють області ненульової площі. Кількість країн на карті не перевищує \textbf{10}. Завершенням опису є рядок, який містить лише нуль і позначає завершення вхідних даних. \OutputFile Для кожної заданої карти вивести у окремому рядку найменшу кількість кольорів, необхідни для розфарбування чергової карти, яка задовольняє заданим умовам.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
6
Blizid
0 0
60 0
60 60
0 60
0 50
50 50
50 10
0 10
-1
Blizid
0 10
10 10
10 50
0 50
-1
Windom
10 10
50 10
40 20
20 20
20 40
10 50
-1
Accent
50 10
50 50
35 50
35 25
-1
Pilot
35 25
35 50
10 50
-1
Blizid
20 20
40 20
20 40
-1
4
A1234567890123456789
0 0
0 100
100 100
100 0
-1
B1234567890123456789
100 100
100 200
200 200
200 100
-1
C1234567890123456789
0 100
100 100
100 200
0 200
-1
D123456789012345678
100 0
100 100
200 100
200 0
-1
0
Вихідні дані #1
4
2