求救,这题不优化3TLE,优化8WA
查看原帖
求救,这题不优化3TLE,优化8WA
247220
StarryWander楼主2020/9/27 21:02

题目 代码如下```cpp #include<bits/stdc++.h> using namespace std; struct node{ int x,y; }; node off[4]={{1,0},{0,1},{-1,0},{0,-1}}; bool a[1001][1001]; bool vis[1001][1001]; int b[1001][1001]; int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ string s; cin>>s; for(int j=1;j<=s.size();j++){ a[i][j]=s[j-1]-'0'; } } queueq,bj; int x,y; for(int i=1;i<=m;i++){ int sum=1; cin>>x>>y; if(b[x][y]>0) { cout<<b[x][y]<<endl; break; } q.push((node){x,y}); vis[x][y]=1; bj.push((node){x,y}); while(!q.empty()){ for(int j=0;j<4;j++){ int xx=q.front().x+off[j].x; int yy=q.front().y+off[j].y; if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&vis[xx][yy]==0){ if((a[q.front().x][q.front().y]==0&&a[xx][yy]==1)||(a[q.front().x][q.front().y]==1&&a[xx][yy]==0)){ vis[xx][yy]=1; q.push((node){xx,yy}); bj.push((node){xx,yy}); sum++; } } } q.pop(); } cout<<sum<<endl; while(!bj.empty()){ b[bj.front().x][bj.front().y]=sum; bj.pop(); } for(int j=1;j<=n;j++){ for(int k=1;k<=n;k++){ vis[j][k]=0; } } } return 0; }

2020/9/27 21:02
加载中...