Submission

Status:
PPPPPPPP

Score: 100

User: NJTYTYTY

Problemset: อพยพ

Language: cpp

Time: 0.003 second

Submitted On: 2025-03-08 00:48:16

#include<bits/stdc++.h>
#define speed ios::sync_with_stdio(false); cin.tie(0);
using namespace std;
using pii = pair<int,int>;
int n, m;
vector<vector<char>> mp;
vector<vector<bool>> visited;

vector<pii> dd = {{-1,0} , {1,0}, {0,-1} , {0,1}};

void dfs(int i, int j, int upper,int lower) {
    
    for(auto [a,b] : dd) {
        int ni = i + a, nj = j + b;
        if(ni <= 0 || ni > n || nj <= 0 || nj > m) continue;
        if(visited[ni][nj] || mp[ni][nj] == '#') continue;
        if(ni < upper || ni > lower) continue; 

        visited[ni][nj] = true;
        dfs(ni,nj, upper,lower);
    }
}


int predfs(int a,int b, int c, int d, int k) {
    visited.assign(n+1, vector<bool>(m+1, false));
    visited[a][b] = true;
    dfs(a, b, a - k , a + k );
    if(visited[c][d]) return 1;
    return 0;
}

int main() {
    int round; speed cin >> n >> m >> round;
    mp.resize(n+1 , vector<char>(m+1));
    visited.resize(n+1, vector<bool>(m+1, false));
    for(int i = 1 ; i <= n ; ++i) {
        for(int j = 1; j <= m ;++j) {
            cin >> mp[i][j];
        }
    }

    while(round--) {
        int a, b, c, d ,k; cin >> a >> b >> c >> d >> k;
        cout << predfs(a, b, c, d, k) << '\n';
    }



    return 0;
}