edu-pi / SOMA

0 stars 0 forks source link

[알고리즘] 11, 12번째 문제 #103

Closed SongGwanSeok closed 3 weeks ago

SongGwanSeok commented 3 weeks ago

📝 Description

무엇을? 11번째

왜?

❗️Todo

ETC

기타사항

SongGwanSeok commented 3 weeks ago

https://leetcode.com/problems/keys-and-rooms/description/

class Solution {
public:
    bool canVisitAllRooms(vector<vector<int>>& rooms) {
        vector<bool> visited(rooms.size(), false);
        deque<int> q;
        q.push_back(0);

        while(!q.empty()){
            int now = q.front();
            q.pop_front();
            visited[now] = true;
            vector<int> keys = rooms[now];

            for(int key: keys){
                if(!visited[key]){
                    q.push_back(key);
                }
            }
        }

        for(bool v: visited){
            if(!v){
                return false;
            }
        }
        return true;
    }
};

class Solution {
public:
    void dfs(vector<vector<int>>& rooms, vector<bool>& visited, int now){
        visited[now] = true;
        vector<int> keys = rooms[now];

        for(int key: keys){
            if(!visited[key]){
                dfs(rooms, visited, key);
            }
        }
    }

    bool canVisitAllRooms(vector<vector<int>>& rooms) {

        vector<bool> visited(rooms.size(), false);

        dfs(rooms, visited, 0);

        for(bool v: visited){
            if(!v){
                return false;
            }
        }
        return true;
    }
};