题解 | 课程表IV

alt

题干分析:

题设给予我们课程个数,一个二维数组标识某门课程是另一门课程的直接前置课程,同时给予我们需要进行判定是否为前置课程(包括直接与间接前置)的课程组,要求我们返回这些课程组的判定结果。

算法思路:

通过题设给予的信息构建邻接矩阵,然后使用Warshall算法求出可达性矩阵。此后我们根据需要查询的课程对,在此可达性矩阵中直接查询结果即可。

实现代码:

vector<bool> checkIfPrerequisite(
        int numCourses,
        vector<vector<int> > &prerequisites,
        vector<vector<int> > &queries
    ) {
        vector adj(numCourses, vector(numCourses, false));

        for (auto &link: prerequisites) adj[link[0]][link[1]] = true;

        // Warshall
        for (int k = 0; k < numCourses; ++k) {
            for (int i = 0; i < numCourses; ++i) {
                if (adj[i][k]) {
                    for (int j = 0; j < numCourses; ++j) {
                        if (adj[k][j]) adj[i][j] = true;
                    }
                }
            }
        }

        const int n = static_cast<int>(queries.size());
        vector ans(n, false);
        for (int i = 0; i < n; ++i) ans[i] = adj[queries[i][0]][queries[i][1]];
        return ans;
    }

复杂度分析:

  • 时间复杂度:Warshall算法时间复杂度为O(n^3)占主体,总时间复杂度为O(n^3)
  • 空间复杂度:邻接矩阵和可达性矩阵使用同一片O(n^2)空间,空间复杂度总计为O(n^2)
全部评论

相关推荐

2025-12-06 16:59
门头沟学院
点赞 评论 收藏
分享
ragflow&nbsp;v0.23.1&nbsp;发布:Memory&nbsp;稳定性全面增强,RAG&nbsp;图像与表格理解升级,新增&nbsp;GitHub&nbsp;/&nbsp;GitLab&nbsp;/&nbsp;Asana&nbsp;/&nbsp;IMAP&nbsp;数据源1.&nbsp;文档与说明改进•&nbsp;修复文档中的错误说明•&nbsp;在环境变量配置中新增默认密码的安全警告•&nbsp;更新本地部署&nbsp;LLM&nbsp;的图示说明•&nbsp;补充&nbsp;Docker&nbsp;构建中可选代理参数•&nbsp;修正文档拼写错误•&nbsp;新增&nbsp;RAG&nbsp;和&nbsp;Agent&nbsp;上下文引擎说明文档•&nbsp;文档版本统一更新为&nbsp;v0.23.1•&nbsp;新增文档分类文件•&nbsp;移除健康检查相关文档•&nbsp;文档页面主题适配优化2.&nbsp;Memory&nbsp;与时间一致性修复•&nbsp;修复从&nbsp;ES&nbsp;初始化&nbsp;Memory&nbsp;大小时的问题•&nbsp;重构时间戳一致性逻辑•&nbsp;修复时间戳与&nbsp;datetime&nbsp;不一致的问题•&nbsp;使用异步任务保存&nbsp;Memory•&nbsp;在删除&nbsp;Memory&nbsp;消息前判断索引是否存在•&nbsp;修复&nbsp;API&nbsp;Key&nbsp;删除&nbsp;Bug3.&nbsp;RAG&nbsp;与解析能力增强•&nbsp;修复&nbsp;MDX&nbsp;文件解析问题并正式支持•&nbsp;修复数据集解析错误•&nbsp;修复批量解析问题•&nbsp;优化图像和表格上下文提取逻辑•&nbsp;重构&nbsp;metadata&nbsp;提取规则以提升精度•&nbsp;文档解析配置变更时,自动删除分块图片•&nbsp;修复数值型&nbsp;metadata&nbsp;在&nbsp;meta_filter&nbsp;中导致的&nbsp;TypeError4.&nbsp;Agent&nbsp;与&nbsp;Chat&nbsp;相关修复与增强•&nbsp;修复聊天页面存在错误信息时,后续消息引用显示异常的问题•&nbsp;修复会话引用初始化错误,防止对话错位•&nbsp;新建&nbsp;Agent&nbsp;的&nbsp;begin&nbsp;节点显示&nbsp;undefined&nbsp;的问题已修复•&nbsp;支持在&nbsp;Agent&nbsp;页面和&nbsp;Chat&nbsp;页面中,仅选择使用相同&nbsp;embedding&nbsp;模型的知识库•&nbsp;在&nbsp;begin&nbsp;节点增加显示模式设置•&nbsp;修复消息选择删除逻辑问题5.&nbsp;数据源与连接器•&nbsp;新增&nbsp;Asana&nbsp;数据源接入及配置能力•&nbsp;新增&nbsp;IMAP&nbsp;数据源接入、配置及同步能力•&nbsp;新增&nbsp;GitHub&nbsp;数据源连接器•&nbsp;新增&nbsp;GitLab&nbsp;数据源连接器•&nbsp;修复&nbsp;S3&nbsp;数据源参数错误•&nbsp;修复&nbsp;S3&nbsp;数据源页面样式问题6.&nbsp;系统与管理后台优化•&nbsp;管理后台用户列表支持按邮箱排序•&nbsp;管理状态面板中不再显示未使用组件状态•&nbsp;管理端分页在数据刷新后自动回到第一页的问题已修复7.&nbsp;安全性与稳定性提升•&nbsp;使用&nbsp;ast.literal_eval&nbsp;替换不安全的&nbsp;eval&nbsp;调用•&nbsp;修复代码扫描安全告警中权限配置问题8.&nbsp;SDK&nbsp;与&nbsp;API&nbsp;相关修复•&nbsp;确保&nbsp;rm_chunk&nbsp;API&nbsp;中变量正确初始化•&nbsp;移除&nbsp;webhook&nbsp;中输出&nbsp;jsonschema&nbsp;的代码•&nbsp;修复应用知识库配置的&nbsp;LLM&nbsp;无法生效的问题9.&nbsp;前端与&nbsp;UI&nbsp;修复•&nbsp;修复动态翻译&nbsp;key&nbsp;chunk.docType&nbsp;显示异常•&nbsp;修复&nbsp;IDE&nbsp;警告•&nbsp;修复数据重新拉取后分页重置异常10.&nbsp;架构与工程调整•&nbsp;重构部分代码逻辑•&nbsp;文档解析器在处理完成后正确关闭字节流•&nbsp;更新模型提供方配置•&nbsp;更新发布流程配置•&nbsp;修复索引和数据删除流程中的边界问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务