4 条题解
-
0
BFS
ll n,m; const ll Max1=1005; char t[Max1][Max1]; ll pd[Max1][Max1]; ll dx[4]={0,0,1,-1},dy[4]={1,-1,0,0}; void bfs(ll x,ll y) { ll ans=1; vector<pair<ll,ll>>jyh; queue<pair<ll,ll>>dl; dl.push(make_pair(x,y)); jyh.push_back(make_pair(x,y)); pd[x][y]=1; while(!(dl.empty())) { ll x1,y1; x1=dl.front().first,y1=dl.front().second; dl.pop(); for(int i=0;i<4;i++) { if(((x1+dx[i]>=1&&x1+dx[i]<=n)&&(y1+dy[i]>=1&&y1+dy[i]<=n))&&t[x1][y1]!=t[x1+dx[i]][y1+dy[i]]&&pd[x1+dx[i]][y1+dy[i]]==0) { ans++; dl.push(make_pair(x1+dx[i],y1+dy[i])); jyh.push_back(make_pair(x1+dx[i],y1+dy[i])); pd[x1+dx[i]][y1+dy[i]]=1; } } } for(auto i:jyh) pd[i.first][i.second]=ans; return ; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n>>m; for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) cin>>t[i][j]; while(m--) { ll x,y; cin>>x>>y; if(pd[x][y]==0) bfs(x,y); cout<<pd[x][y]<<'\n'; } return 0; }
信息
- ID
- 1095
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 93
- 已通过
- 8
- 上传者