2019-06-01
17:54:51
adhere to! !
Topic links:
http://bailian.openjudge.cn/practice/2815
#include <bits / STDC ++ H.> the using namespace STD; int n-= 0 , m = 0 ; int roomNumber = 0 ; int ROOMSIZE = 0 ; // size of the area of the current room int maxRoomSize = 0 ; int Room [ 100 ] [ 100 ]; int Color [ 100 ] [ 100 ]; void DFS ( int X, int Y); int main () { Scanf ( " % D% D", &n, &m); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf("%d", &room[i][j]); } } for(int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if(color[i][j] == 0) { roomNumber++; roomSize = 0; dfs(i, j); maxRoomSize = max(maxRoomSize, roomSize); } } } cout << roomNumber << endl; cout << maxRoomSize << endl; return 0; } void dfs(int x, int y) { if(color[x][y] != 0) { return; } roomSize++; color[x][y] = roomNumber; if((room[x][y] & 1) == 0) dfs(x, y - 1); //向西走 if((room[x][y] & 2) == 0) dfs(x - 1, y); //向北走 if((room[x][y] & 4 )== 0) dfs(x, y + 1); //向东走 if((room[x][y] & 8) == 0) DFS (X+ . 1 , Y); // southward }