Leetcode 841. 钥匙和房间

news/2024/7/15 18:08:33 标签: leetcode, 深度优先, 算法, 广度优先, 图论

原题链接:Leetcode 841. 钥匙和房间

在这里插入图片描述
在这里插入图片描述

DFS

class Solution {
public:
    vector<int> visit;
    vector<vector<int>> adj;
    int num=0;
    void dfs(int i)
    {
        visit[i]=1;
        num++;
        for(auto x:adj[i])
        {
            if(!visit[x]) dfs(x);
        }
    }
    bool canVisitAllRooms(vector<vector<int>>& rooms) {
        int n=rooms.size();
        visit.resize(n);
        adj.resize(n);
        for(int i=0;i<n;i++)
        {
            for(auto x:rooms[i]) adj[i].push_back(x);
        }
        dfs(0);
        return num==n;
    }
};

BFS

class Solution {
public:
    bool canVisitAllRooms(vector<vector<int>>& rooms) {
        int n=rooms.size();
        vector<int> visit;
        vector<vector<int>> adj;
        visit.resize(n);
        adj.resize(n);
        for(int i=0;i<n;i++)
        {
            for(auto x:rooms[i]) adj[i].push_back(x);
        }
        queue<int> q;
        q.push(0);
        visit[0]=1;
        int num=0;
        while(!q.empty())
        {
            int i=q.front();
            q.pop(); num++;
            for(auto x:adj[i])
            {
                if(!visit[x]) 
                {
                    q.push(x);
                    visit[x]=1;
                }
            }
        }
        return num==n;
    }
};

http://www.niftyadmin.cn/n/1264518.html

相关文章

Leetcode 851. 喧闹和富有 DFS/拓扑排序

原题链接&#xff1a;Leetcode 851. 喧闹和富有 DFS1&#xff1a; class Solution { public:int tmpINT_MAX;int person;vector<vector<int>> adj;vector<int> visit;void dfs(vector<int>& quiet,int now){if(quiet[now]<tmp){tmpquiet[now];…

Leetcode 1042. 不邻接植花 图染色

原题链接&#xff1a;Leetcode 1042. 不邻接植花 class Solution { public:vector<int> gardenNoAdj(int n, vector<vector<int>>& paths) {vector<int> res(n1);vector<vector<int>> adj(n1);for(auto x:paths){int ax[0],bx[1];adj…

Leecode 1976. 到达目的地的方案数 Dijkstra+DP

原题链接&#xff1a;Leecode 1976. 到达目的地的方案数 参考&#xff1a;到达目的地的方案数 dijkstraDP&#xff0c;用一个cnt数组记录一下每个点到起点的最短路径的数量。 class Solution { public:vector<vector<pair<int,int>>> adj;vector<int>…

Leetcode 2316. 统计无向图中无法互相到达点对数 DFS/BFS/并查集+前缀和

原题链接&#xff1a;Leetcode 2316. 统计无向图中无法互相到达点对数 DFS class Solution { public:vector<vector<int>> adj;vector<int> visit;void dfs(int i,int color){visit[i]color;for(auto x:adj[i]){if(!visit[x]) dfs(x,color);}}long long cou…

Leetcode 2359. 找到离给定两个节点最近的节点

原题链接&#xff1a;Leetcode 2359. 找到离给定两个节点最近的节点 DFS: class Solution { public:vector<int> dis1;vector<int> dis2;vector<int> visit;void dfs(vector<int>& edges,int now,int d,int flag){if(flag1) dis1[now]d;else di…

Leetcode 2368. 受限条件下可到达节点的数目 BFS/DFS/并查集

原题链接&#xff1a;Leetcode 2368. 受限条件下可到达节点的数目 DFS class Solution { public:vector<vector<int>> adj;vector<int> visit;map<int,int> mp;int num0;void dfs(int now){visit[now]1;num;for(auto x:adj[now]){if(!visit[x] &am…

Leetcode 2374. 边积分最高的节点 模拟

原题链接&#xff1a;Leetcode 2374. 边积分最高的节点 class Solution { public:int edgeScore(vector<int>& edges) {int nedges.size();vector<long long> sum(n);long long maxsum0;for(int i0;i<n;i) {sum[edges[i]]i;maxsummax(maxsum,sum[edges[i]])…

Leetcode 2192. 有向无环图中一个节点的所有祖先 逆向建图+DFS/拓扑排序

原题链接&#xff1a;Leetcode 2192. 有向无环图中一个节点的所有祖先 class Solution { public:vector<vector<int>> adj;vector<vector<int>> res;vector<int> indegree;map<pair<int,int>,int> mp;void dfs(int now){for(aut…