Problem
【USACO2008 Open】奶牛的邻居
Description
了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的时候有一个独一无二的位置坐标.当满足下列两个条件之一,两只奶牛和是属于同一个群的:
- 两只奶牛的曼哈顿距离不超过,即.
- 两只奶牛有共同的邻居,即存在一只奶牛,使与与均同属一个群.
给出奶牛们的位置,请计算草原上有多少个牛群,以及最大的牛群里有多少奶牛。
Input
第行输入和,之后行每行输入一只奶牛的坐标。
Output
Sample Input
1 | 4 2 |
Sample Output
1 | 2 3 |
Source
Gold
标签:计算几何
set
Solution
对于原来的点,将其转化为,则其原来的曼哈顿距离转化为切比雪夫距离,即。这样和就无关了。两个点能相连当且仅当转换坐标后。
将所有点转换坐标后以从小到大排序,这样可以用双指针维护值之差不超过的一段区间。同时对在这段区间中的点用一个维护其坐标,若新加入的点与其前驱后继的差不超过,则分别连边。用并查集维护连通块个数和大小即可。
Code
1 |
|