1462. 课程安排 IV(DFS + 记忆化, FLoyd 算法)

在这里插入图片描述

class Solution:
    def checkIfPrerequisite(self, n: int, prerequisites: List[List[int]], queries: List[List[int]]) -> List[bool]:
        d = [[False] * n for _ in range(n)]
        for i, j in prerequisites:
            d[i][j] = True
        for k, i, j in itertools.product(range(n), repeat=3):
                d[i][j] = (d[i][j])|(d[i][k] & d[k][j])
        return [d[i][j] for i, j in queries]

// class Solution {
// public:
//     map<pair<int,int>,bool>mp;
//     bool dfs(vector<vector<int>>& graph,int u,int end){
//         if(u==end) {
//             mp[make_pair(u,u)]=true;
//             return true;
//         }
//         if(mp.find(make_pair(u,end))!=mp.end()) return mp[make_pair(u,end)];
//         for(auto v:graph[u]){
//             if(dfs(graph,v,end)) {
//                 mp[make_pair(v,end)]=true;
//                 return true;
//             }
//         }
//         mp[make_pair(u,end)]=false;
//         return false;
//     }
//     vector<bool> checkIfPrerequisite(int n, vector<vector<int>>& prerequisites, vector<vector<int>>& queries) {
//         vector<vector<int>> graph;
//         graph.resize(n);
//         for(auto v: prerequisites){
//             graph[v[0]].push_back(v[1]);
//         }
//         vector<bool>res;
//         for(auto query:queries){
//             res.push_back(dfs(graph,query[0],query[1]));
//         }


//         return res;
//     }
// };
class Solution {
public:

    vector<bool> checkIfPrerequisite(int n, vector<vector<int>>& prerequisites, vector<vector<int>>& queries) {
        vector<vector<int>>d(n,vector<int>(n,0));
        for(auto pre:prerequisites){
            d[pre[0]][pre[1]]=1;
        }
        for(int k=0;k<n;k++){
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    d[i][j]=d[i][j]||(d[i][k]&&d[k][j]);
                }
            }
        }

        vector<bool>res;
        for(auto query:queries){
            res.push_back(d[query[0]][query[1]]);
        }


        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_38662930/article/details/107435010