《七月集训》第三十天 拓扑排序

Crazy_DM 2022-07-30 14:55:52

207.课程表

class Solution {
#define maxn 5000
    vector<int> edges[maxn];
    int deg[maxn];
public:
    bool canFinish(int numCourses, vector<vector<int>>& pre) {
        queue<int> q;
        memset(deg, 0, sizeof(deg));
        for(int i = 0; i < pre.size(); ++i) {
            edges[pre[i][1]].push_back(pre[i][0]);
            ++deg[pre[i][0]];
        }
        for(int i = 0; i < numCourses; ++i) {
            if(deg[i] == 0) q.push(i);
        }
        while(!q.empty()) {
            int v = q.front();
            q.pop();
            for(int i = 0; i < edges[v].size(); ++i) {
                int val = edges[v][i];
                if(--deg[val] == 0) q.push(val);
            }
        }
        for(int i = 0; i < numCourses; ++i) {
            if(deg[i]) return false;
        }
        return true;
    }
};

 

...全文
20 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
万人千题

6.2w+

社区成员

学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
社区管理员
  • 英雄哪里出来
  • Amy卜bo皮
  • Risso
加入社区
帖子事件
创建了帖子
2022-07-30 14:55
社区公告

QQ群:480072171

英雄算法交流 8 群