首页 > 其他分享 >并行课程 III

并行课程 III

时间:2023-07-31 16:11:45浏览次数:32  
标签:课程 int res 并行 indege vector reach III

给你一个整数 n ,表示有 n 节课,课程编号从 1 到 n 。同时给你一个二维整数数组 relations记录每门课程的先修课程
请你根据以下规则算出完成所有课程所需要的最少月份数:
如果一门课的所有先修课都已经完成,你可以在任意时间开始这门课程。
你可以同时上任意门课程,请你返回完成所有课程所需要的最少月份数。

1. 拓扑排序

class Solution {
public:
    int minimumTime(int n, vector<vector<int>> &relations, vector<int> &time) {
        vector<int> edges[n];//邻接表
        vector<int> indege(n);//记录点的入度
        for (auto &x: relations) {//建图
            edges[x[0] - 1].push_back(x[1] - 1);//课程号转换成0~n-1
            indege[x[1] - 1]++;
        }
        queue<int> q;
        int res = 0;
        vector<int> reach(n);//记录节点结束时间
        for (int i = 0; i < n; i++)//初始化度入度为0节点
            if (!indege[i]){ 
                q.push(i);     
                reach[i] = time[i];
                res = max(res,reach[i]);
            }
       
        while (!q.empty()) {//拓扑排序
            auto x = q.front();//取出无前驱节点
            q.pop();
            for (auto j: edges[x]) {
                reach[j] = max(reach[j], reach[x] + time[j]);//通过前驱节点的结束时间,更新当前节点结束时间
                res = max(res,reach[j]);
                if (--indege[j] == 0)
                    q.push(j);
            }
        }
        return res;
    }
};

标签:课程,int,res,并行,indege,vector,reach,III
From: https://www.cnblogs.com/929code/p/17593719.html

相关文章

  • 智力差异性对课程的影响
    “收藏从未停止,练习从未开始”,或许有那么一些好题好方法,在被你选中收藏后却遗忘在收藏夹里积起了灰?今天请务必打开你沉甸甸的收藏重新回顾,分享一下那些曾让你拍案叫绝的好东西吧!你可以从以下几个方面进行创作(仅供参考)这个在工作之前就做了很多研究,一直觉得不合适发表……重点参考文......
  • 课程问题
    一.课程表I你这个学期必须选修numCourses门课程,记为0到numCourses-1。在选修某些课程之前需要一些先修课程。先修课程按数组prerequisites给出,其中prerequisites[i]=[ai,bi],表示如果要学习课程ai则必须先学习课程bi。例如,先修课程对[0,1]表示:想要学......
  • 2023.7.28 并行课程III
    根据题目要求,可以分析出,需要按照拓扑序上完所有的课。每次上课都需要一定时间,可以同时上任意多门课,要求最少得时间。比如说示例1中的一个拓扑序是123,可以让12并行,因此只需要3+5=8个时间。可以先用拓扑排序,得出拓扑序,然后进行dp(满足拓扑序即可dp)。dp时,对每个节点,令其花费时间为......
  • day04课程回顾
    课程回顾数据类型转换按照类型大小排序byteshortint(char)longfloatdoublebyte1字节8位 -2^7~2^7-1short2字节16位 -2^15~2^15-1int4字节 32位 -2^31~2^31-1long 8字节 64位 -2^63~2^61-1float 4字节 32位 -10......
  • ST官方基于米尔STM32MP135开发板培训课程(一)
    本文将以Myirtech的MYD-YF13X以及STM32MP135F-DK为例,讲解如何使用STM32CubeMX结合Developerpackage实现最小系统启动。    1.开发准备1.1Developer package准备a.Developerpackage下载:‍https://www.st.com/en/embedded-software/stm32mp1dev.html‍b.解压后进入......
  • day03课程回顾
    课程回顾进制十进制转换二进制十进制数除以2倒取余数二进制转换十进制二进制转换八进制从低位次开始三位一组,如果最高位不足三位补0,将每一组三位二进制转换为八进制八进制转换二进制一个八进制数转换成三个二进制数,不足的位次补0二进制转换十六进制从低位次......
  • Java培训课程哪个好?手把手教你挑选
    随着互联网的快速发展,Java开发已经成为了最受欢迎的技能之一,成为了很多人的职业选择。但是,在选择Java培训机构时,我们该如何去判断哪家机构最适合自己呢?下面,我将分享一些选择Java开发培训机构需要注意的点。1.考察课程设置在选择Java开发培训机构时,首先需要考虑课程设置是否全......
  • 第三届“泰迪杯”数据分析职业技能大赛: 教育平台的线上课程智能推荐 (决赛候选)答辩P
    ......
  • day01课程回顾
    day02:Java相关概念一、回顾程序:解决问题编写的一系列计算机指令的有序集合计算机语言低级语言机器语言汇编语言高级语言面向过程面向对象:JavaJava发展Java之父:詹姆斯高斯林1996年JavaJDK5.0是Java的分水岭我们用JDK8DOS命令Java特......
  • 5模型机整体的联调【FPGA模型机课程设计】
    5模型机整体的联调【FPGA模型机课程设计】前言推荐5模型机整体的联调安排MIPS基本整数指令集MIPS扩展整数指令集测试与结果1FPGA模型计算机整体方案设计掌握MIPS指令集的相关设计2模型计算机各功能电路设计初始化数据I型指令测试R型指令测试J型指令测试访存指令测试3模型机指令......