DFS issue of the castle

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 
}

 

Guess you like

Origin www.cnblogs.com/Artimis-fightting/p/10960549.html
dfs