栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

力扣-207题 课程表(C++)- 拓扑排序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣-207题 课程表(C++)- 拓扑排序

题目链接:https://leetcode.cn/problems/course-schedule/
题目如下:

class Solution {
public:
    bool canFinish(int numCourses, vector>& prerequisites) {
        //拓扑排序只需要记录所有点的入度,以及每条边即可,每次判断入度是否为0

        vector in;//存储所有节点的入度
        in.resize(numCourses,0);
        vector g[numCourses];//存储所有边的邻接表

        int cnt=0;//记录能够拓扑排序的数量

        for(auto e:prerequisites){
            in[e[1]]++;//记录入度!!!
            g[e[0]].push_back(e[1]);
        }

        queue que;
        for(int i=0;i
            if(in[i]==0) que.push(i);
        }

        if(que.size()==0) return false;//若找不到入度为0的点,则说明存在环

        while(que.size()){
            auto t=que.front();
            que.pop();
            cnt++;

            for(auto e:g[t]){
                in[e]--;
                if(in[e]==0) que.push(e);
            }
        }

        if(cnt==numCourses) return true;
        else return false;
    }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号