63tps求调!!!
  • 板块P1331 海战
  • 楼主vector_STL_
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/16 21:34
  • 上次更新2025/1/17 10:46:42
查看原帖
63tps求调!!!
1390387
vector_STL_楼主2025/1/16 21:34
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e4 + 4;

int ds[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int f[N][N], n, m, ans = 0;

void dfs(int x, int y) {
	f[x][y] = 0;
	for (int i = 0; i < 4; i++) {
		int nx = x + ds[i][0], ny = y + ds[i][1];
		if (nx < 1 || nx > n || ny < 1 || ny > m || !f[nx][ny]) {
			continue;
		}
		dfs(nx, ny);
	}
}

signed main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				char c;
				cin >> c;
				f[i][j] = (c == '.') - 1;
			}
		}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (f[i][j]) {
				dfs(i, j);
				ans++;
			}
		}
	}
	if(ans==0||ans==1){
		cout<<"Bad placement.";
	}
	else{
		cout << "There are " << ans << " ships.";
	}
	return 0;
}
2025/1/16 21:34
加载中...