返回题目问答
讨论 / 题目问答/ 帖子详情

只能过4个样例,大佬帮我debug一下

#include <bits/stdc++.h>

using namespace std;

#define int long long
map<pair<int, int>, int> boom;
set<pair<int, int>> res;

bool judge(int x1, int y1, int x2, int y2, int r)
{
    int a = abs(x1 - x2), b = abs(y1 - y2);
    if (a > r || b > r)//防止爆longlong
        return false;
    return a * a + b * b <= r * r;
}

void dfs(int x, int y, int r)
{
    for (int j = -r; j <= r; ++j)
        for (int k = -r; k <= r; ++k)
        {
            int dx = x + j, dy = y + k;
            if (judge(x, y, dx, dy, r))
            {
                if (boom.count({dx, dy}) && !res.count({dx, dy}))
                {
                    res.insert({dx, dy});
                    dfs(dx, dy, boom[{dx, dy}]);
                }
            }
        }

    return;
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; ++i)
    {
        int x, y, r;
        cin >> x >> y >> r;
        boom[{x, y}] = r;
    }
    for (int i = 0; i < m; ++i)
    {
        int x, y, r;
        cin >> x >> y >> r;
        for (int j = -r; j <= r; ++j)
            for (int k = -r; k <= r; ++k)
            {
                int dx = x + j, dy = y + k;
                if (judge(x, y, dx, dy, r))
                {
                    if (boom.count({dx, dy}) && !res.count({dx, dy}))
                    {
                        res.insert({dx, dy});
                        dfs(dx, dy, boom[{dx, dy}]);
                    }
                }
            }
    }

    cout << res.size() << endl;

    return 0;
}
0 回复 0 转发 0 喜欢 73 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!