1004779564bzbjj @ 2024-06-05 22:19:22
本机手动输入数据(100X100以内规模)暂未测试出问题
自己的电脑也跑不了1000X1000的数据
一提交就RE
#include<bits/stdc++.h>
using namespace std;
int n,m,c[1145][1145],v[1145][1145];
char mp[1145][1145];
int dx[5]={0,1,-1,0,0};
int dy[5]={0,0,0,-1,1};
int ans=0;
priority_queue <int>pr;
int ss(int x,int y,int z){
v[x][y]=z;
ans++;
pr.push(x*1001+y);
for(int i=1;i<=4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if((mp[x][y]=='0'&&mp[nx][ny]=='1')||(mp[x][y]=='1'&&mp[nx][ny]=='0')){
if(nx>0&&ny>0&&nx<=n&&ny<=n&&v[nx][ny]!=z){
ss(nx,ny,z);
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>mp[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(v[i][j]==0){
ans=0;
ss(i,j,i*1001+j);
while(pr.size()>0){
int px=pr.top()/1001;
int py=pr.top()%1001;
c[px][py]=ans;
pr.pop();
}
}
}
}
for(int i=1;i<=m;i++){
int x,y;cin>>x>>y;cout<<c[x][y]<<endl;
}
//for(int i=1;i<=n;i++){
// for(int j=1;j<=n;j++){
// cout<<c[i][j]<<" ";
// }cout<<endl;
//}
return 0;
}
by CangerYumo @ 2024-06-05 22:27:08
@1004779564bzbjj 你的函数ss没有返回值
by CangerYumo @ 2024-06-05 22:28:05
然后别的暂时没看出来什么问题
by CangerYumo @ 2024-06-05 22:29:28
@1004779564bzbjj 没有返回值的函数类型要写成void