CF1086F Forest Fires

题目描述

伯兰德森林是在几十年前种植的,形成了一个无限大的网格,每个格子里都有一棵树。现在,这些树已经长大,形成了非常密集的结构。 实际上,这么密集,以至于火灾成了森林的真正威胁。今年伯兰德的气候异常炎热,一些树木被点燃了! 第 $0$ 秒时,有一些树木最先被点燃。每过一秒,所有当前正在燃烧的树木会点燃所有尚未燃烧的相邻树木。若两个格子通过边或角相邻,则认为这两棵树是相邻的。幸运的是,经过 $t$ 秒后,伯兰德消防队终于赶到火灾现场,并瞬间扑灭了所有火焰。 现在他们想要计算火灾的破坏力。设 $val_{x, y}$ 表示位于格子 $(x, y)$ 的树被点燃的时刻(以秒为单位)。破坏力定义为所有被烧毁树木的 $val_{x, y}$ 之和。 显然,消防队员都是消防员而不是程序员,因此他们请你帮忙计算火灾的破坏力。 由于结果可能非常大,请输出其对 $998244353$ 取模的结果。

输入格式

第一行包含两个整数 $n$ 和 $t$($1 \le n \le 50$,$0 \le t \le 10^8$),分别表示最初被点燃的树的数量和消防队扑灭火灾的时刻。 接下来的 $n$ 行,每行包含两个整数 $x$ 和 $y$($-10^8 \le x, y \le 10^8$),表示最初被点燃的树的位置。 显然,网格上 $(0, 0)$ 的位置以及坐标轴的方向无关紧要,因为网格是无限的,答案与这些无关。 保证所有给定的树的位置两两不同。 网格是无限的,因此火势不会在到达 $-10^8$ 或 $10^8$ 时停止,而是会继续蔓延。

输出格式

输出一个整数,表示所有被烧毁树木的 $val_{x, y}$ 之和,对 $998244353$ 取模。

说明/提示

以下是前三个样例的示意图。灰色格子的 $val = 0$,橙色格子的 $val = 1$,红色格子的 $val = 2$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1086F/cb9e62b1e70abf36d285ed071b42fbdd39834039.png) 由 ChatGPT 4.1 翻译