数据结构 力扣 练习

图

拓扑:

课程表,课程表II

课程表
课程表II

cpp 复制代码
class Solution {
public:
    bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
        int n=numCourses,cnt=0;
        vector<int> du(n);
        vector<vector<int>> e(n);
        queue<int> q;
        for (auto a:prerequisites){
            int x=a[1],y=a[0];
            e[x].push_back(y);
            du[y]++;
        }
        for (int i=0;i<n;i++){
            if (du[i]==0){
                cnt++;
                q.push(i);
            }
        }
        while (!q.empty()){
            int u=q.front();
            q.pop();
            for (auto v:e[u]){
                du[v]--;
                if (!du[v]){ 
                    cnt++;
                    q.push(v);
                }
            }
        }
        return cnt==n;
    }
};
相关推荐
夏幻灵几秒前
每日一题:LeetCode 165:比较版本号
算法·leetcode·职场和发展
道尔柯南1 分钟前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
Navigator_Z15 分钟前
LeetCode //C - 1288. Remove Covered Intervals
c语言·算法·leetcode
码爸30 分钟前
决策树介绍与示例
python·算法·机器学习
动词ing1 小时前
【题目练习】字符串相乘
算法
0+1111 小时前
算法 --链表
数据结构·算法·leetcode·链表
圣保罗的大教堂1 小时前
leetcode 2333. 最小差值平方和 中等
leetcode
aqiu1111112 小时前
【C++算法打怪专栏】C++ `unordered_set` 常用初始化与插入方法总结
开发语言·c++·算法
Terra.K2 小时前
高精度阶乘求和模板深度解析
开发语言·c++·算法
Peregrine93 小时前
C++ - > 类和对象
java·c++·算法