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;
}