首页 > 代码库 > 一刷leetcode——图论
一刷leetcode——图论
207. Course Schedule
题意:每个课程会有一个先修课程,给定一张图,判断能否按顺序修完所有课程
我的思路:拓扑排序裸题
我的代码:
class Solution { public: struct Node { int to, next; }; bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { if (prerequisites.size() == 0) return 1; Node edge[prerequisites.size()]; int head[numCourses], que[numCourses], iq = 0, indegree[numCourses]; memset(head, -1, sizeof(head)); memset(indegree, 0, sizeof(indegree)); for (int i = 0; i < prerequisites.size(); i++) { edge[i].to = prerequisites[i].first; indegree[prerequisites[i].first]++; edge[i].next = head[prerequisites[i].second]; head[prerequisites[i].second] = i; } for (int i = 0; i < numCourses; i++) if (indegree[i] == 0) que[iq++] = i; for (int i = 0; i < iq; i++) { for (int k = head[que[i]]; k != -1; k = edge[k].next) { indegree[edge[k].to]--; if (indegree[edge[k].to] == 0) que[iq++] = edge[k].to; } } for (int i = 0; i < numCourses; i++) if (indegree[i] != 0) return 0; return 1; } };
一刷leetcode——图论
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。