孤岛的总面积
import java.util.*;public class Test {static int count=0;static int [][]dir = {{0,1},{1,0},{0,-1},{-1,0}};public static void dfs(int[][]graph,int x,int y){graph[x][y]=0;for(int i=0;i<4;i++){int nextX=x+dir[i][0];int nextY=y+dir[i][1];if(nextX<0||nextX>=graph.length||nextY<0||nextY>=graph[0].length)continue;if(graph[nextX][nextY]==0)continue;dfs(graph,nextX,nextY);}}public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int m=in.nextInt();int [][]graph=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){graph[i][j]=in.nextInt();}}for(int i=0;i<n;i++){if(graph[i][0]==1)dfs(graph,i,0);if(graph[i][m-1]==1)dfs(graph,i,m-1);}for(int i=0;i<m;i++){if(graph[0][i]==1)dfs(graph,0,i);if(graph[n-1][i]==1)dfs(graph,n-1,i);}int res=0;for(int i=1;i<n-1;i++){for(int j=1;j<m-1;j++){if(graph[i][j]==1)res++;}}System.out.println(res);}}
沉没孤岛
import java.util.*;public class Test {static int count=0;static int [][]dir = {{0,1},{1,0},{0,-1},{-1,0}};static int[][]visit;public static void dfs(int[][]graph,int x,int y){visit[x][y]=1;for(int i=0;i<4;i++){int nextX=x+dir[i][0];int nextY=y+dir[i][1];if(nextX<0||nextX>=graph.length||nextY<0||nextY>=graph[0].length)continue;if(graph[nextX][nextY]==0||visit[nextX][nextY]==1)continue;dfs(graph,nextX,nextY);}}public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int m=in.nextInt();int [][]graph=new int[n][m];visit=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){graph[i][j]=in.nextInt();}}for(int i=0;i<n;i++){if(graph[i][0]==1)dfs(graph,i,0);if(graph[i][m-1]==1)dfs(graph,i,m-1);}for(int i=0;i<m;i++){if(graph[0][i]==1)dfs(graph,0,i);if(graph[n-1][i]==1)dfs(graph,n-1,i);}for(int i=0;i<n;i++){for(int j=0;j<m-1;j++){System.out.print(visit[i][j]+" ");}System.out.println(visit[i][m-1]);}}}