leetcode 207课程表

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课程表的更多相关文章
- Java实现 LeetCode 207 课程表
207. 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] ...
- Leetcode 207.课程表
课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总 ...
- [LeetCode] 207. 课程表(拓扑排序,BFS)
题目 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量 ...
- LeetCode:课程表【207】
LeetCode:课程表[207] 题目描述 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹 ...
- LeetCode:课程表II【210】
LeetCode:课程表II[210] 题目描述 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一 ...
- [LeetCode] 210. 课程表 II
题目链接:https://leetcode-cn.com/problems/course-schedule-ii/ 题目描述: 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前 ...
- 【LeetCode】课程表 II
[问题]现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程.例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及 ...
- leetcode.图.207课程表-Java
1. 具体题目 现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1].给定 ...
- [LeetCode] 207. Course Schedule 课程表
题目: 分析: 这是一道典型的拓扑排序问题.那么何为拓扑排序? 拓扑排序: 有三件事情A,B,C要完成,A随时可以完成,但B和C只有A完成之后才可完成,那么拓扑排序可以为A>B>C或A&g ...
随机推荐
- 线程----code
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Java注解【五、注解实战】
需求: 1.表:用户ID,用户名,年龄,邮箱. 2.实现方法,传入实体,打印sql. 实现: 1.表: package Annotation; @Table("user") pub ...
- Oracle【二维表管理:约束】
1.简单的表创建和字段类型最简单的方式去创建表(没有添加主键之类的约束条件)[Oracle的字段类型]number:数值类型--整数类型:number(a) 总长度a--小数类型:number(a,b ...
- 1.opencv_画图
#导入工具包 import numpy as np import cv2 import matplotlib.pyplot as plt # 定义显示图片 def show(image): plt.i ...
- zencart新增分类点击不进去的解决办法
zencart批量表新增分类点击不进去的原因是安装了管理员权限分级模块,只要运行以下语句即可. INSERT INTO `admin_allowed_categories` (`categories_ ...
- 第七章 路由 71 路由-router-link的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- WPF界面开发必备技能!TreeListView - 如何快速更新多个项目属性
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- SSM项目无法解析JSP页面
JSP页面显示标头<%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- swoole 定时器 swoole_time_tick 和 swoole_time_after
<?php class myticker{ public $server = null; CONST host = '127.0.0.1'; CONST port = 9502; public ...
- CSS选择器div和p的用法和区别
div,p.div p.div>p.div+p.div~p.div.a的用法和区别 div,p:选择所有<div>元素和<p>元素 <style> p,spa ...