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:

  1. The input prerequisites is a graph represented by a list of edges, not adjacency matrices. Read more about how a graph is represented.
  2. 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;
}
};

最新文章

  1. 如何配置Linux系统的网络IP地址
  2. c++ 虚函数和纯虚函数
  3. ruby -- 基础学习(九)filename去除扩展名
  4. eclipse创建android项目失败的问题 [ android support library ]
  5. NYOJ-20 吝啬的国度 AC 分类: NYOJ 2014-01-23 12:18 200人阅读 评论(0) 收藏
  6. 手把手教你玩转SOCKET模型之重叠I/O篇(上)
  7. oracle 根据汉字返回拼音函数
  8. Eclipse用法和技巧二十七:定义自己的快速联想词
  9. java多线程系列(四)---Lock的使用
  10. https://oi-wiki.org/
  11. CPU温度的实现
  12. Spark基本架构及原理
  13. SLEUTH 城市扩张模型
  14. bui框架nav导航图标一览
  15. opencv学习之路(4)、Mat类介绍,基本绘图函数
  16. 一个简单的PHP短信群发
  17. WeX5入门之HelloWorld
  18. mysql utf8mb4 所引起的问题
  19. 焦作网络赛B-Mathematical Curse【dp】
  20. Mac上安装配置和简单使用PostgreSQL(仍然很不懂)

热门文章

  1. 调用父类构造器:super
  2. git 一些提交等用法
  3. Ubuntu下部分软件的简介及安装
  4. [Selenium] CSS3 选择器
  5. 深入浅出 JMS(三) - ActiveMQ 消息传输
  6. part1:12-sudo用户管理和Linux密码故障排除
  7. 关于使用smsx.cab控件做web打印使用方法(转)
  8. hdu-1175(bfs+剪枝)
  9. 如何设置vim中tab键缩进---配置初始化设置
  10. 使用vbs给PPT(包括公式)去背景