当前位置: 首页 > news >正文

邢台市住房和城乡建设局网站合肥网站运营管理公司

邢台市住房和城乡建设局网站,合肥网站运营管理公司,报名网站制作,wordpress小工具下载Problem: 210. 课程表 II 文章目录 思路解题方法Code 思路 本题是经典拓扑排序模板,通过DFS和BFS两种方式进行实现。 解题方法 DFS DFS方法的重点在于如何标记节点状态,初做题者如果只用未访问和已访问两种状态很容易陷入死结。正确的做法是使用三种状…

Problem: 210. 课程表 II

文章目录

  • 思路
  • 解题方法
  • Code

思路

本题是经典拓扑排序模板,通过DFSBFS两种方式进行实现。

解题方法

  1. DFS

    1. DFS方法的重点在于如何标记节点状态,初做题者如果只用未访问和已访问两种状态很容易陷入死结。
    2. 正确的做法是使用三种状态未访问,正在访问和已访问,原因是原因是如果想遇到环一定是遇到了本次DFS路径上的节点,他们属于特殊状态需要标记出。而遇到尚未访问的和别的路径访问过的节点都是没有问题的。
  2. BFS

    1. BFS方法的重点在于多源,这也是BFS本身的一个特性,可以在图的多点同时进行BFS,参考题目994. 腐烂的橘子就很好地利用了这一特点。所以需要同时在图的多个地方进行操作时可以考虑多源BFS
    2. 首先将节点入度统计出来,初始化时加入入度为0的节点,之后每次出队节点就把节点指向的节点的入度减少,再入队新产生的入度为0的节点,如此重复。
    3. 这一做法和手写拓扑排序十分类似。结果中如果没有包含所有节点即说明图中有环,无法拓扑排序。

Code

代码中同时有DFSBFS两种实现

class Solution {
public:vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {vector<vector<int>> e(numCourses);vector<int> degree(numCourses);for(auto& prerequisity : prerequisites) {e[prerequisity[1]].push_back(prerequisity[0]);degree[prerequisity[0]]++;}auto res = dfs(numCourses, e);// auto res = bfs(numCourses, e, degree);return res;}/* DFS */vector<int> dfs(int n, vector<vector<int>>& e) {vector<int> vis(n, 0);  // 0未访问, 1正在访问, 2已被收录stack<int> s;bool valid = true;for(int i = 0; i < n; i++) {if(vis[i] == 0) dfs_rec(n, e, vis, s, valid, i);}if(valid == false) return {};vector<int> res;while(!s.empty()) {res.push_back(s.top());s.pop();}return res;}void dfs_rec(int n, vector<vector<int>>& e, vector<int>& vis, stack<int>& s, bool& valid, int cur) {if(vis[cur] == 1) {valid = false;return;}if(vis[cur] == 2) {return;}vis[cur] = 1;for(auto eg : e[cur]) {dfs_rec(n, e, vis, s, valid, eg);}s.push(cur);vis[cur] = 2;return;}/* BFS */vector<int> bfs(int n, vector<vector<int>>& e, vector<int>& degree) {queue<int> q;for(int i = 0; i < n; i++) {if(degree[i] == 0) q.push(i);}vector<int> res;while(!q.empty()) {auto cur = q.front();q.pop();res.push_back(cur);for(auto& eg : e[cur]) {degree[eg]--;if(degree[eg] == 0) q.push(eg);}}if(res.size() < n) return {};return res;}
};
http://www.yayakq.cn/news/557341/

相关文章:

  • 北京工程建设协会网站稻壳儿免费ppt模板
  • 手机网站有什么要求房地产网站策划
  • 网站建设经验下载百度网盘app最新版
  • 杭州网站制jquery网站发展历史时间轴
  • 在百度云上做网站网站建设二次开发怎么样
  • 做企业网站 asp的cms系统哪个好wordpress模板上传图片
  • 360网站卖东西怎么做招标网与采购网官网
  • 网站301在哪里做素材模板大全
  • 电商网站 设计方案app推广团队
  • vs做的网站源代码学科基地网站建设
  • 网站建设外贸wordpress gpl协议
  • 站长统计幸福宝2022年排行榜新开的公司怎么做网站
  • 网站域名注册后怎么打开网站手机网页视频下载神器
  • 展示型的网站用wordpress文章美化
  • 夏天做那些网站能致富如何进行搜索引擎优化
  • 泰州市网站建设wordpress添加二维码弹窗
  • 电子商务网站建设与课程设计门户网站开发建设成本明细
  • 怎么利用云盘建设网站如何压缩网站
  • p2p网贷网站建设哪家好怎么做国际网站
  • 石家庄网站推广优化正能量不良网站进入窗口免费阅读
  • 个人网站可以做自媒体吗网站建设公司怎么样
  • 广东省企网站建设wordpress文章不发在首页
  • 有关网站建设的公众号crm系统是什么意思
  • 从用户旅程角度做网站分析wordpress博客内使用二级目录安装discuz后的静态化
  • 做网站法律条文网站建设代码模板
  • 昆山科技网站建设如何给网站弄ftp
  • 彩票黑网站是怎么做的软文投放平台有哪些
  • 网站建设对标行业分析中国纪检监察报投稿须知
  • 配送网站开发wordpress关键词描述设置
  • 汉语国际网站建设深圳高端网站案例