1 条题解

  • 1
    @ 2024-10-11 13:05:50
    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int INF = 0x3f3f3f3f;
    const ll mod = 998244353;
    const int N = 5e2 + 10;
    int a[N][N], dp[N][N];
    int dx[] = {1, -1, 0, 0};
    int dy[] = {0, 0, 1, -1};
    int n, m, d, ans;
    
    void dfs(int x, int y, int cnt) {
    	if (dp[x][y] != 0) {
    		return;
    	}
    	dp[x][y] = cnt;
    	for (int i = 0; i < 4; i++) {
    		int nx = x + dx[i];
    		int ny = y + dy[i];
    		if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && abs(a[nx][ny] - a[x][y]) <= d) {
    			dfs(nx, ny, cnt);
    		}
    	}
    }
    
    int main() {
    	scanf("%d%d%d", &n, &m, &d);
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= m; j++) {
    			scanf("%d", &a[i][j]);
    		}
    	}
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= m; j++) {
    			if (dp[i][j] == 0) {
    				ans++;
    				dfs(i, j, ans);
    			}
    		}
    	}
    	printf("%d", ans);
    	return 0;
    }
    
    • 1

    信息

    ID
    7
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    136
    已通过
    34
    上传者