Submission

Status:

PPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: kavin8888

Problemset: Sirabyrinth 2

Language: cpp

Time: 0.003 second

Submitted On: 2025-12-19 12:34:00

#include <bits/stdc++.h>
using namespace std;
int n,m,ans=0;
vector<vector<char>> a;
vector<vector<bool>> vis;
queue<pair<int,int>> q;
pair<int,int> DI[4]={{-1,0},{1,0},{0,-1},{0,1}};
bool valid(int x,int y) {
	return 0<=x && x<n && 0<=y && y<m;
}
int main() {
	ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
	cin>>n>>m;
	a.assign(n,vector<char>(m));
	vis.assign(n,vector<bool>(m,false));
	for(int i=0;i<n;++i) {
		for(int j=0;j<m;++j) {
			cin>>a[i][j];
			if(a[i][j]=='S') {
				q.push({i,j});
				vis[i][j]=true;
			}
		}
	}
	while(!q.empty()) {
		auto [x,y] =q.front(); q.pop();
		ans++;
		for(auto [di,dj] : DI) {
			int dx=x+di,dy=y+dj;
			if(!valid(dx,dy)) continue;
			if(a[dx][dy]=='#') continue;
			if(!vis[dx][dy]) {
				vis[dx][dy]=true;
				q.push({dx,dy});
			}
		}
	}
	cout<<ans<<'\n';
	return 0;
}