64分求助!(为什莫不AC!!!!!!!!!!!)
  • 板块P1331 海战
  • 楼主C_zhai
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/21 10:35
  • 上次更新2023/11/3 02:18:23
查看原帖
64分求助!(为什莫不AC!!!!!!!!!!!)
938026
C_zhai楼主2023/8/21 10:35
#include<bits/stdc++.h>
using namespace std;
char g[1010][1010];
int n,m;
int ans=0;
bool f[1010][1010];
int fx[4]={1,0,-1,0},fy[4]={0,1,0,-1};
struct node{
	int x,y;
};
queue<node>q;
void bfs(int m1,int n1){
	q.push({m1,n1});
	f[m1][n1]=true;
	while(!q.empty()){
		node t=q.front();
		q.pop();
	    for(int i=0;i<4;i++){
	    	int a=t.x+fx[i],b=t.y+fy[i];
	    	if(a<0||a==n||b<0||b==m)continue;
	    	if(g[a][b]=='.')continue;
	    	if(f[a][b])continue;
	    	q.push({a, b});
	    	f[a][b]=true;
		}
	}
	ans++;
}
int main()
{
	memset(f, false, sizeof f);
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>g[i][j];
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(g[i][j]=='#'){
				if((g[i][j-1]=='#'&&(g[i+1][j-1]=='#'||g[i-1][j-1]=='#'))||(g[i][j+1]=='#'&&(g[i+1][j+1]=='#'||g[i-1][j+1]=='#'))){
					cout<<"Bad placement.";
					return 0;
				}
			}
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(g[i][j]=='.')continue;
			else if(g[i][j]=='#'&&!f[i][j])bfs(i,j);
		}
	}
	cout<<"There are "<<ans<<" ships.";
}
2023/8/21 10:35
加载中...