class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
//验证是否为DAG,每次验证指向的是否已经存在于当前图中 //建图
vector<int> indegree(numCourses,);//入度
vector<vector<int>> graph(numCourses,vector(,));//邻接表 for(int i=;i<prerequisites.size();i++){
indegree[prerequisites[i][]]++;graph[prerequisites[i][]].push_back(prerequisites[i][]);
}
//显示图showgraph(graph,numCourses);
//BFS
queue<int> q;
for(int i=;i<numCourses;i++){
if(indegree[i]==){
q.push(i);
}
}
//将入度为0的点且未访问过的进入set,然后将其后继的入度全部减一,循环执行
int cnt=;
while(!q.empty()){
int front=q.front();
q.pop();
cnt++; for(int j=;j<graph[front].size();j++){
int v=graph[front][j];
indegree[v]--;
if(indegree[v]==){
q.push(v);
}
}
}
return cnt==numCourses;//当有环时,总有一些点入度不能减到0,因此不能完全bfs遍历
}
private:
void showgraph(vector<vector<int>>& graph,int numCourses){
for(int i=;i<numCourses;i++){
cout<<i<<": ";
for(int j=;j<graph[i].size();j++){
cout<<graph[i][j]<<",";
}
cout<<endl;
}
}
};

leetcode 207课程表的更多相关文章

  1. Java实现 LeetCode 207 课程表

    207. 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] ...

  2. Leetcode 207.课程表

    课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总 ...

  3. [LeetCode] 207. 课程表(拓扑排序,BFS)

    题目 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量 ...

  4. LeetCode:课程表【207】

    LeetCode:课程表[207] 题目描述 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹 ...

  5. LeetCode:课程表II【210】

    LeetCode:课程表II[210] 题目描述 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一 ...

  6. [LeetCode] 210. 课程表 II

    题目链接:https://leetcode-cn.com/problems/course-schedule-ii/ 题目描述: 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前 ...

  7. 【LeetCode】课程表 II

    [问题]现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程.例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及 ...

  8. leetcode.图.207课程表-Java

    1. 具体题目 现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1].给定 ...

  9. [LeetCode] 207. Course Schedule 课程表

    题目: 分析: 这是一道典型的拓扑排序问题.那么何为拓扑排序? 拓扑排序: 有三件事情A,B,C要完成,A随时可以完成,但B和C只有A完成之后才可完成,那么拓扑排序可以为A>B>C或A&g ...

随机推荐

  1. 线程----code

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. Java注解【五、注解实战】

    需求: 1.表:用户ID,用户名,年龄,邮箱. 2.实现方法,传入实体,打印sql. 实现: 1.表: package Annotation; @Table("user") pub ...

  3. Oracle【二维表管理:约束】

    1.简单的表创建和字段类型最简单的方式去创建表(没有添加主键之类的约束条件)[Oracle的字段类型]number:数值类型--整数类型:number(a) 总长度a--小数类型:number(a,b ...

  4. 1.opencv_画图

    #导入工具包 import numpy as np import cv2 import matplotlib.pyplot as plt # 定义显示图片 def show(image): plt.i ...

  5. zencart新增分类点击不进去的解决办法

    zencart批量表新增分类点击不进去的原因是安装了管理员权限分级模块,只要运行以下语句即可. INSERT INTO `admin_allowed_categories` (`categories_ ...

  6. 第七章 路由 71 路由-router-link的使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  7. WPF界面开发必备技能!TreeListView - 如何快速更新多个项目属性

    DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...

  8. SSM项目无法解析JSP页面

    JSP页面显示标头<%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  9. swoole 定时器 swoole_time_tick 和 swoole_time_after

    <?php class myticker{ public $server = null; CONST host = '127.0.0.1'; CONST port = 9502; public ...

  10. CSS选择器div和p的用法和区别

    div,p.div p.div>p.div+p.div~p.div.a的用法和区别 div,p:选择所有<div>元素和<p>元素 <style> p,spa ...