| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
容易看懂的代码#include "stdio.h"
#include "string.h"
int g_Map[64][64];
bool g_Visited[64][64];
int g_DirsForRow[4] = {0, -1, 0, 1};//w n e s
int g_DirsForCol[4] = {-1, 0, 1, 0};//w n e s
bool can_move(int row, int col, int dir){
int shift = dir;
return (g_Map[row][col] & (1 << shift)) == 0;
}
void dfs(int row, int col, int& roomSize){
if(g_Visited[row][col]){
return;
}
g_Visited[row][col] = true;
roomSize++;
for(int dir = 0; dir < 4; dir++){
if(can_move(row, col, dir)){
dfs(row + g_DirsForRow[dir], col + g_DirsForCol[dir], roomSize);
}
}
}
int main(){
int rows, cols;
scanf("%d%d", &rows, &cols);
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
scanf("%d", &g_Map[i][j]);
}
}
int roomCount = 0;
int maxRoomSize = 0;
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
if(!g_Visited[i][j]){
int roomSize = 0;
dfs(i, j, roomSize);
roomCount++;
if(maxRoomSize < roomSize){
maxRoomSize = roomSize;
}
}
}
}
printf("%d\n%d", roomCount, maxRoomSize);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator