#include <bits/stdc++.h>
#define fst first
#define snd second
#define pb push_back
#define SZ(x) (int)x.size()
#define ALL(x) x.begin(),end()
#define forn(i,a,b) for(int i = a; i<b; i++)
#define mset(a,v) memset(a,v,sizeof(a))
#define FIN ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
typedef long long ll;
const int MAXN = 100+5;
vector<pair<ll,ll>> oper = {{0,1},{1,0}};
ll n,m;
vector<vector<ll>> mapa;
bool vis[MAXN][MAXN];
void dfs(ll i, ll j){
if(vis[i][j]) return;
vis[i][j]=true;
for(auto o:oper) if(i+o.fst<n && i+o.fst>=0 && j+o.snd<m && j+o.snd>=0){
if(mapa[i+o.fst][j+o.snd]==0) dfs(i+o.fst,j+o.snd);
}
}
int main(){
cin>>n>>m;
mapa.clear();
mapa.resize(n,vector<ll>(m));
forn(i,0,n){
forn(j,0,m){
cin>>mapa[i][j];
}
}
ll q; cin>>q;
forn(i,0,q){
ll x,y; cin>>x>>y; x--; y--;
if(mapa[x][y]!=1){
mapa[x][y]=1;
mset(vis,false);
dfs(0,0);
if(!vis[n-1][m-1]) mapa[x][y]=0, cout<<0<<'\n';
else cout<<1<<'\n';
}else{
cout<<0<<'\n';
}
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |