QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 64 MB 總分: 100

#2048. 地图染色

统计

在进入传说中的魔法神秘世界之前,你很幸运地得到了一张地图。地图展示了你计划探索的整个区域,包括几个边界复杂的国家。地图绘制得很清晰,但仅用棕褐色墨水绘制;一眼很难辨认出哪个区域属于哪个国家,这可能会让你陷入严重的危险。你决定在进入该区域之前为地图着色。“凡事预则立,”你对自己说。

每个国家拥有一个或多个领土,每个领土呈多边形形状。属于同一个国家的领土可能“接触”也可能不“接触”,即可能存在互不相连的领土。所有属于同一个国家的领土必须被分配相同的颜色。你可以为多个国家分配相同的颜色,但为了避免混淆,彼此“相邻”的两个国家应该被分配不同的颜色。如果两个国家的任何领土共享一段非零长度的边界,则认为这两个国家是“相邻”的。

编写一个程序,找出为地图着色所需的最少颜色数量。

输入格式

输入包含多组地图数据。每组地图数据以一行包含领土总数 $n$ 开头,随后是这些领土的数据。$n$ 是一个不超过 100 的正整数。一个具有 $m$ 个顶点的领土数据格式如下:

String
x1 y1
x2 y2
. . .
xm ym
-1

“String”(一串字母数字字符)给出了它所属的国家名称。国家名称至少包含一个字符,且不超过二十个字符。当一个国家拥有多个领土时,其名称会出现在每个领土的数据中。

其余行表示领土的顶点。顶点数据行包含一对非负整数,表示顶点的 $x$ 和 $y$ 坐标。$x$ 和 $y$ 坐标由单个空格分隔,$y$ 坐标后紧跟换行符。领土的边由相邻两个顶点数据行给出的顶点连接而成,并由最后一个和第一个顶点数据行给出的顶点连接而成。$x$ 和 $y$ 坐标均不超过 1000。最后,一行中的 $-1$ 标记了顶点数据行的结束。顶点数量 $m$ 不超过 100。

你可以假设多边形的轮廓是简单的,即它们不会自交也不会自触。没有两个多边形共享非零面积的区域。地图中的国家数量不超过 10。

最后一组地图数据后跟一行仅包含零的行,标记输入数据的结束。

输出格式

对于每组地图数据,输出一行,包含满足指定条件为地图着色所需的最少颜色数量。

样例

输入 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

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.