@[wangyanxiang2013](/user/1002621) 私自散播题目违规!!!
by __Sam__ @ 2024-04-25 19:37:05
@[wangyanxiang2013](/user/1002621)
1≥q
≤1000。是什么
by szh_AK_all @ 2024-04-25 19:38:26
$1 \leq r,c \leq 10^7$ ???你确定可以做?
by nightwatch_ryan @ 2024-04-25 19:38:46
@[wangyanxiang2013](/user/1002621) 橙,dfs板子
by DFs_YYDS @ 2024-04-25 19:39:49
等等,没注意到数据范围,你这读入都超时了
by DFs_YYDS @ 2024-04-25 19:40:18
@[wangyanxiang2013](/user/1002621)
话说题目的数据哪来的
by szh_AK_all @ 2024-04-25 19:42:03
@[szh_AK_all](/user/939431) 手打的?复制的?
by DFs_YYDS @ 2024-04-25 19:42:58
@[DFs_YYDS](/user/1119406) @[nightwatch_ryan](/user/961351)
我都随便打的,数据贼小
by wangyanxiang2013 @ 2024-04-25 19:48:00
这算私自散播题目吗?违规我就删帖子。
by wangyanxiang2013 @ 2024-04-25 19:50:15
@[wangyanxiang2013](/user/1002621) A了,代码
```cpp
#include<iostream>
#define N 105
bool a[N][N],b[N][N],cc[N][N],d[N][N],e[N][N];
const int dx[]={0,1,-1,0};
const int dy[]={1,0,0,-1};
int r,c,q;
void dfs1(int x,int y,int &cnt){
for(int i=0;i<4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=1&&ny>=1&&nx<=r&&ny<=c&&a[nx][ny]){
a[nx][ny]=0;
cnt++;
dfs1(nx,ny,cnt);
}
}
}
void dfs2(int x,int y,int &cnt){
for(int i=0;i<4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=1&&ny>=1&&nx<=r&&ny<=c&&b[nx][ny]){
b[nx][ny]=0;
cnt++;
dfs2(nx,ny,cnt);
}
}
}
void dfs3(int x,int y,int &cnt){
for(int i=0;i<4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=1&&ny>=1&&nx<=r&&ny<=c&&cc[nx][ny]){
cc[nx][ny]=0;
cnt++;
dfs3(nx,ny,cnt);
}
}
}
void dfs4(int x,int y,int &cnt){
for(int i=0;i<4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=1&&ny>=1&&nx<=r&&ny<=c&&d[nx][ny]){
d[nx][ny]=0;
cnt++;
dfs4(nx,ny,cnt);
}
}
}
void dfs5(int x,int y,int &cnt){
for(int i=0;i<4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=1&&ny>=1&&nx<=r&&ny<=c&&e[nx][ny]){
e[nx][ny]=0;
cnt++;
dfs5(nx,ny,cnt);
}
}
}
int main(){
std::cin>>r>>c>>q;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
char x;std::cin>>x;
if(x=='Y')a[i][j]=1;
if(x=='R')b[i][j]=1;
if(x=='B')cc[i][j]=1;
if(x=='G')d[i][j]=1;
if(x=='W')e[i][j]=1;
}
}
int ans1,ans2,ans3,ans4,ans5;
ans1=ans2=ans3=ans4=ans5=0;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(a[i][j]){
int cnt=0;
dfs1(i,j,cnt);
ans1=std::max(ans1,cnt);
}
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(b[i][j]){
int cnt=0;
dfs2(i,j,cnt);
ans2=std::max(ans2,cnt);
}
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(cc[i][j]){
int cnt=0;
dfs3(i,j,cnt);
ans3=std::max(ans3,cnt);
}
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(d[i][j]){
int cnt=0;
dfs4(i,j,cnt);
ans4=std::max(ans4,cnt);
}
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(e[i][j]){
int cnt=0;
dfs5(i,j,cnt);
ans5=std::max(ans5,cnt);
}
}
}
while(q--){
char x;std::cin>>x;
if(x=='Y')printf("%d\n",ans1);
if(x=='R')printf("%d\n",ans2);
if(x=='B')printf("%d\n",ans3);
if(x=='G')printf("%d\n",ans4);
if(x=='W')printf("%d\n",ans5);
}
}
```
by nightwatch_ryan @ 2024-04-25 20:01:23