Topological Sor-207. Course Schedule
2024-08-27 18:49:35
There are a total of n courses you have to take, labeled from 0
to n - 1
.
Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]
Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?
For example:
2, [[1,0]]
There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.
2, [[1,0],[0,1]]
There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.
Note:
- The input prerequisites is a graph represented by a list of edges, not adjacency matrices. Read more about how a graph is represented.
- You may assume that there are no duplicate edges in the input prerequisites.
class Solution {
public:
bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) {
vector<vector<int>> graph(numCourses, vector<int>());
vector<int> in(numCourses, );
for (auto a : prerequisites) {
graph[a.second].push_back(a.first);
++in[a.first];
}
queue<int> q;
for (int i = ; i < numCourses; ++i) {
if (in[i] == ) q.push(i);
}
while (!q.empty()) {
int t = q.front();
q.pop();
for (auto a : graph[t]) {
--in[a];
if (in[a] == ) q.push(a);
}
}
for (int i = ; i < numCourses; ++i) {
if (in[i] != ) return false;
}
return true;
}
};
最新文章
- 如何配置Linux系统的网络IP地址
- c++ 虚函数和纯虚函数
- ruby -- 基础学习(九)filename去除扩展名
- eclipse创建android项目失败的问题 [ android support library ]
- NYOJ-20 吝啬的国度 AC 分类: NYOJ 2014-01-23 12:18 200人阅读 评论(0) 收藏
- 手把手教你玩转SOCKET模型之重叠I/O篇(上)
- oracle 根据汉字返回拼音函数
- Eclipse用法和技巧二十七:定义自己的快速联想词
- java多线程系列(四)---Lock的使用
- https://oi-wiki.org/
- CPU温度的实现
- Spark基本架构及原理
- SLEUTH 城市扩张模型
- bui框架nav导航图标一览
- opencv学习之路(4)、Mat类介绍,基本绘图函数
- 一个简单的PHP短信群发
- WeX5入门之HelloWorld
- mysql utf8mb4 所引起的问题
- 焦作网络赛B-Mathematical Curse【dp】
- Mac上安装配置和简单使用PostgreSQL(仍然很不懂)