程式語言 - LeetCode - C - 841. Keys and Rooms



參考資訊:
https://www.cnblogs.com/grandyang/p/10415773.html

題目:


解答:

void dfs(int **rooms, int *size, int idx, int *visited)
{
    int i = 0;

    visited[idx] = 1;

    for (i = 0; i < size[idx]; i++) {
        int key = rooms[idx][i];

        if (visited[key] == 0) {
            dfs(rooms, size, key, visited);
        }
    }
}

bool canVisitAllRooms(int** rooms, int roomsSize, int* roomsColSize)
{
    #define MAX_SIZE 3000

    int i = 0;
    int visited[MAX_SIZE] = { 0 };

    dfs(rooms, roomsColSize, 0, visited);
    for (i = 0; i < MAX_SIZE; i++) {
        roomsSize -= visited[i];
    }
    return (roomsSize == 0) ? true : false;
}