用并查集将距离小于等于k的点合并起来,最后找点最多的集合即可
c++
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1010;
R市正在进行传染病防控。
R市总共有n个人。
具体的,每个人有一个位置(x,y),现在已知有一个是高风险人员,但还未追踪到具体是谁。
同时我们定义一个安全距离K。如果某个人和这个高风险人员的距离不超过K,那么这个人也将被列为高风险人员。为了减少防控对市民生活的影响,工作人员希望知道所有可能情况下最多的高风险人员数量。
两个人(x1,y1),(x2,y2)的距离定义为∣x1−x2∣+∣y1−y2∣
一行两个整数 n 和 k。
接下来一行包含 n 个整数 x1,x2,...,xn。
再接下来一行包含 n 个整数 y1,y2,...,yn。
约束条件: 1≤n<1000,1≤k,x,y≤1000。
输出一个整数,表示感染人数的最大数量。
输入
5 2
8 6 1 5 1
4 4 3 4 6
输出
3
说明
说明: 如果一开始一号人员高风险,则二号人员也会变成高风险,然后四号人员变成高风险此时高风险人员数量最多为3。
本题属于以下题库,请选择所需题库进行购买