Submission

Status:

-xxxx--xxx

Subtask/Task Score:

0/100

Score: 0

User: hyyh

Problemset: กางเต็นท์

Language: cpp

Time: 0.002 second

Submitted On: 2026-01-24 22:58:06

#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <iomanip>
#include <set>
#include <bitset>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
using piiii = tuple<int,int,int,int>;
#define endl '\n'
#define f first
#define s second

int const N = 175;

int n,m,cnt = 0;

int visit[N][N];

int table[N][N];

int x[4] = {0,1,0,-1};
int y[4] = {1,0,-1,0};

void dfs(int i,int j){
    if(visit[i][j]) return;
    visit[i][j] = 1;
    cnt++;
    for(int k = 0;k < 4;k++){
        if(table[i+x[k]][j+y[k]]) dfs(i+x[k],j+y[k]);
    }
}

int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin >> n >> m;
    for(int i = 0;i < n;i++){
        string st;cin >> st;
        for(int j = 0;j < m;j++){
            table[i][j] = st[j]-'0';
            //cout << table[i][j] << " ";
        }
        //cout << endl;
    }
    vector<int> ans = {0};
    for(int i = 0;i < n;i++){
        for(int j = 0;j < m;j++){
            cnt = 0;
            //cout << visit[i][j] << " ";
            if(table[i][j] && !visit[i][j]){
                dfs(i,j);
                ans.emplace_back(cnt);
            }
        }
        //cout << endl;
    }
    cout << *max_element(ans.begin(),ans.end());
}