#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
typedef vector <int> vi;
typedef vector <ll> vll;
typedef vector <string> vs;
typedef vector <vector <int>> vvi;
typedef vector <vll> vvll;
typedef map<int, int> mi;
typedef map<string, int> ms;
typedef map<char, int> mc;
typedef map <int, bool> mb;
typedef map<ll, ll> mll;
typedef unordered_map<int, int> umi;
typedef unordered_map<string, int> ums;
typedef unordered_map<char, int> umc;
typedef unordered_map <int, bool> umb;
typedef unordered_map<ll, ll> umll;
typedef vector <ld> vld;
typedef vector <bool> vb;
typedef pair <int, int> pii;
typedef pair<ll, ll> pll;
typedef vector <pii> vpii;
typedef vector <pll> vpll;
#define FOR(i,N) for(ll i = 0 ; i < N;i++)
#define eFOR(i,a,b) for(ll i = a; i <=b;i++)
#define dFOR(i,N) for(ll i = N - 1; i>=0;i--)
#define edFOR(i,b,a) for(ll i = b ; i >=a;i--)
#define all(x) x.begin(),x.end()
#define SORT(x) sort(all(x))
#define RSORT(x) sort(x.rbegin(), x.rend())
#define UNQ(x) unique(all(x))
#define mine(x) min_element(all(x))
#define maxe(x) max_element(all(x))
#define lb(v, x) lower_bound(all(v) , x)
#define ub(v, x) upper_bound(all(v) , x)
#define pb push_back
#define FIX cout << fixed << setprecision(15)
#define g(i , a) get<i>(a)
const long double PI = 3.141592653589793;
const ll mod = 1e9 + 7;
int CASE = 1;
const int mxn = 1e5 + 1;
const ll infll = 1e18;
const int infi = 1e9;
bool prime(ll n)
{
if (n <= 1)
return false;
if (n == 2 or n == 3)
return true;
if (n % 2 == 0 or n % 3 == 0)
return false;
for (ll i = 5; i * i <= n; i += 6)
if (n % i == 0 || n % (i + 2) == 0)
return false;
return true;
}
ll __gcd(ll a, ll b)
{
return !b ? a : __gcd(b, a % b);
}
ll power(ll a, ll b)
{
ll x = a, res = 1, p = b;
while (p > 0)
{
if (p & 1)
res *= x;
x *= x;
p >>= 1;
}
return res;
}
vi dp;
vvi pos;
int cnt = 0;
vs v;
vi dx = { -1 ,1 , 0 ,0 };
vi dy = { 0 , 0 , -1, 1 };
vector <vb> vis;
void dfs(int x, int y)
{
if (x < 0 || x >= v.size() || y < 0 || y >= v[0].size())
return;
if (vis[x][y] || v[x][y] == '.')
return;
vis[x][y] = true;
pos[x][y] = cnt;
for (int i = 0; i < 4; i++)
dfs(x + dx[i], y + dy[i]);
}
void solve()
{
int n, m;
cin >> n >> m;
v = vs(n);
FOR(i, n)
cin >> v[i];
vis = vector<vb>(n, vb(m, false));
pos = vvi(n, vi(m, 0));
FOR(i, n)
{
FOR(j, m)
{
if (v[i][j] == '*' && pos[i][j] == 0)
{
cnt++;
dfs(i, j);
}
}
}
int ans = 0;
FOR(i, n)
{
FOR(j, m)
{
ans = max(ans, pos[i][j]);
}
}
cout << ans;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int T = 1;
while (T--)
{
solve();
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |