#include<vector>#include<iostream>usingnamespace std;int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};intdfs(vector<vector<int>>&graph, vector<vector<bool>>&visted,int row,int col){
visted[row][col]=true;int count =0;for(int i =0; i <4; i++){int nextRow = row + dir[i][0];int nextCol = col + dir[i][1];if(nextRow <0|| nextRow >= graph.size()|| nextCol <0|| nextCol >= graph[0].size()|| graph[nextRow][nextCol]==0){
count++;continue;}if(!visted[nextRow][nextCol]){
count +=dfs(graph, visted, nextRow, nextCol);}}return count;}intmain(){int N, M;
cin >> N >> M;
vector<vector<int>>graph(N,vector<int>(M));
vector<vector<bool>>visted(N,vector<bool>(M,false));for(int i =0; i < N; i++){for(int j =0; j < M; j++){
cin >> graph[i][j];}}for(int i =0; i < N; i++){for(int j =0; j < M; j++){if(graph[i][j]==1){
cout <<dfs(graph, visted, i, j);return0;}}}return0;}
#include<iostream>#include<vector>usingnamespace std;intmain(){int n, m;
cin >> n >> m;
vector<vector<int>>grid(n,vector<int>(m,0));for(int i =0; i < n; i++){for(int j =0; j < m; j++){
cin >> grid[i][j];}}int direction[4][2]={0,1,1,0,-1,0,0,-1};int result =0;for(int i =0; i < n; i++){for(int j =0; j < m; j++){if(grid[i][j]==1){for(int k =0; k <4; k++){// 上下左右四个方向int x = i + direction[k][0];int y = j + direction[k][1];// 计算周边坐标x,yif(x <0// x在边界上|| x >= grid.size()// x在边界上|| y <0// y在边界上|| y >= grid[0].size()// y在边界上|| grid[x][y]==0){// x,y位置是水域
result++;}}}}}
cout << result << endl;}