1 条题解

  • 0
    @ 2026-6-12 21:08:29

    #include #include #include using namespace std;

    const int MAXN = 2005; int x[MAXN], y[MAXN]; bool vis[MAXN]; // 标记是否感染

    int main() { int N, D; cin >> N >> D; int D2 = D * D; // 距离平方阈值

    for (int i = 1; i <= N; ++i)
    {
        cin >> x[i] >> y[i];
    }
    
    queue<int> q;
    vis[1] = true;
    q.push(1);
    
    // BFS 遍历传播
    while (!q.empty())
    {
        int u = q.front();
        q.pop();
        for (int v = 1; v <= N; ++v)
        {
            if (!vis[v])
            {
                long long dx = x[u] - x[v];
                long long dy = y[u] - y[v];
                long long dis2 = dx * dx + dy * dy;
                if (dis2 <= D2)
                {
                    vis[v] = true;
                    q.push(v);
                }
            }
        }
    }
    
    // 输出结果
    for (int i = 1; i <= N; ++i)
    {
        if (vis[i]) cout << "Yes\n";
        else cout << "No\n";
    }
    return 0;
    

    }

    • 1

    信息

    ID
    23
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    298
    已通过
    35
    上传者