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



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

題目:


解答:

#define MAX_LEN 3000

void travel(int **rooms, int *size, int cur, int *q)
{
    int c0 = 0;

    q[cur] = 1;

    for (c0 = 0; c0 < size[cur]; c0++) {
        if (q[rooms[cur][c0]] == 0) {
            travel(rooms, size, rooms[cur][c0], q);
        }
    }
}

bool canVisitAllRooms(int** rooms, int roomsSize, int* roomsColSize)
{
    int r = 0;
    int c0 = 0;
    int q[MAX_LEN] = { 0 };

    travel(rooms, roomsColSize, 0, q);

    for (c0 = 0; c0 < MAX_LEN; c0++) {
        if (q[c0] > 0) {
            r += 1;
        }
    }

    return (r == roomsSize) ? true : false;
}