往8个方向访问就行了
多说一句,我没看到输入是 m,n 这样的,所以最开始我是
scanf("%d %d", &m, &n);
后来发现牛客的case是可以复制的。。才debug出来这个问题,浪费了10min+。
以下是代码

#include 
using namespace std;
int visit(vector>& matrix, int i, int j) {
    int ret=0;
    if(i=matrix.size() || j>=matrix[0].size())
        return ret;
    if(matrix[i][j]==1) {
        ++ ret;
        matrix[i][j] = -1;
    }
    else
        return ret;
    for(int x=-1; x<=1; ++x) {
        for(int y=-1; y<=1; ++y) {
            if(x!=0 || y!=0)
                ret += visit(matrix, i+x, j+y);
    return ret;
}
int main() {
    int m, n;
    int p,q;
    p=0, q=0;
    scanf("%d,%d", &m, &n); {
        vector > matrix(m, vector(n, 0));
        for(int i=0; i<m; ++i) {
            scanf("%d", &matrix[i][0]);
            for(int j=1; j<n; ++j) {
                scanf(",%d", &matrix[i][j]);
            }
        }
        for(int i=0; i<m; ++i) {
            for(int j=0; j<n; ++j) {
                if(matrix[i][j]==1) {
                    q = max(q, visit(matrix, i, j));
                    ++p;
                }
            }
        }
        printf("%d,%d", p, q);
    }
    return 0;
}