我的程序哪里出问题了
查看原帖
我的程序哪里出问题了
579144
Qingying_F_Chana楼主2021/12/11 15:27
#include<bits/stdc++.h>
using namespace std;
queue<int> qx;
queue<int> qy;
int zx[]={-1,0,1,0};
int zy[]={0,-1,0,1};
int n,m,vis[1005][1005];
char vt[1005][1005];
void bfs(int x,int y){
	vis[x][y]=1;
	qx.push(x);
	qy.push(y);
	while(!qx.empty() && !qy.empty()){
		for(int i=0;i<4;i++){
			int tx=qx.front()+zx[i];
			int ty=qy.front()+zy[i];
			if(vt[tx][ty]!='0' && tx>=0 && tx<n && ty>=0 && ty<m && vis[tx][ty]==1){
				qx.push(tx);
				qy.push(ty);
				vt[tx][ty]=vt[qx.front()][qy.front()]+1;
			}
		}
		qx.pop();
		qy.pop();
	}
}
int main(){
	int sum=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>vt[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			if(vt[i][j]!='0' && vis[i][j]!=1){
				bfs(i,j);
				sum++;
			}
		}
	cout<<sum;
	return 0;
}   
2021/12/11 15:27
加载中...