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

leetcode 1462. Course Schedule IV 课程表 IV

Problem: 1462. Course Schedule IV 课程表 IV

状态表 + 深度优先搜索,若从起点出发找到了target目标就提前结束搜索,用flag来标记

Code

class Solution { public: vector<int> router; vector<bool> ret, status; unordered_map<int, unordered_set<int>> ump; unordered_set<int> launch; bool flag = false; int target; void dfs(vector<vector<int>>& tr, int start) { if(flag) return; status[start] = true; for(int& next : tr[start]) { if(status[next]==false) { if(next == target) { flag = true; return; } dfs(tr, next); } } } vector<bool> checkIfPrerequisite(int numCourses, vector<vector<int>>& prerequisites, vector<vector<int>>& queries) { vector<vector<int>> tr(numCourses); int n = prerequisites.size(), m = queries.size(), cc, ce; ret.assign(m, false); for(vector<int>& pqt : prerequisites) { tr[pqt[0]].push_back(pqt[1]); } for(vector<int>& pqt : queries) launch.insert(pqt[0]); for(int i = 0; i < m; i++) { cc = queries[i][0]; ce = queries[i][1]; target = ce; flag = false; status.assign(numCourses, false); dfs(tr, cc); ret[i] = flag; } return ret; } };

额,可以使用矩阵来表示两者之间的前置关系

class Solution { public: vector<vector<bool>> pre; vector<bool> ret, status; int m, n; void dfs(vector<vector<int>>& tr, int start) { if(status[start]) return; status[start] = true; for(int& next : tr[start]) { // if(status[next]==false) { pre[start][next] = true; dfs(tr, next); for(int i = 0; i < pre.size(); i++) { pre[start][i] = pre[start][i] | pre[next][i]; } // } } } vector<bool> checkIfPrerequisite(int numCourses, vector<vector<int>>& prerequisites, vector<vector<int>>& queries) { vector<vector<int>> tr(numCourses); n = prerequisites.size(), m = queries.size(); int cc, ce; ret.assign(m, false); for(vector<int>& pqt : prerequisites) { tr[pqt[0]].push_back(pqt[1]); } status.assign(numCourses, false); pre.assign(numCourses, vector<bool>(numCourses, false)); for(int i = 0; i < m; i++) { cc = queries[i][0]; ce = queries[i][1]; dfs(tr, cc); ret[i] = pre[cc][ce]; } return ret; } };
http://www.jsqmd.com/news/526087/

相关文章:

  • 福森优佳买板材靠谱吗?2026详析兰州水性科天全屋定制板材供应商:城关福森优佳建材实力 - 栗子测评
  • 探索基于单片机的直流微网远程控制
  • 解决终端开发效率瓶颈的AI编程助手技术方案
  • EcomGPT-7B开源大模型实战:构建自有电商知识库+RAG增强的商品问答系统
  • OpenCV高斯模糊算法拆解:用Python从零实现图像处理核心功能
  • 把闲置的Orange Pi R1 Plus变成软路由:保姆级OpenWRT刷机与网络配置避坑指南
  • 西南优质隐藏式检修口品牌推荐榜:中央空调检修口/圆形风口/工字框防雨百叶风口/手动百叶窗风口/木质风口/检修口生产厂家/选择指南 - 优质品牌商家
  • 用PyQtGraph给你的数据采集软件加个“历史回放”功能:像看视频一样拖拽分析曲线
  • 银河麒麟V10-SP1离线部署Nginx后,如何配置反向代理部署前端Vue/React项目(含dist包)
  • Windows下用Docker快速搭建SearXNG私有搜索引擎(附Dify集成配置)
  • 阿里Z-Image-ComfyUI作品集:看看这个文生图模型能画出什么?
  • 2026兰州水性科天板材定做哪家好?兰州水性科天本地板材供应商:城关福森优佳建材实力推荐 - 栗子测评
  • AD7791 24位Σ-Δ ADC驱动开发与SPI寄存器配置详解
  • 联想笔记本BIOS解锁工具专业指南:如何安全解锁高级BIOS设置?
  • 2026格宾石笼网生产厂家+格宾网源头厂家+镀锌格宾网厂家+石笼网防护网源头厂商大合集 - 栗子测评
  • OpenClaw技能市场:5个必备Qwen3.5-4B-Claude增强模块
  • Excel爬取NBA球队数据实战:从URL分析到Power Query自动化处理
  • Dify向量数据库重排序安全架构设计(企业级Rerank可信计算框架首次公开)
  • WSD与TCP/IP协议深度解析:从协议栈到打印机部署实战
  • OpenClaw 3.13 Skill编写初探(Docker)
  • Windows下Ollama模型文件手动导出全攻略:从定位到迁移的完整流程
  • Ruoyi-Python版部署踩坑实录:从Django配置到文件上传Bug修复
  • Unreal引擎网络同步实战:从FObjectReplicator到RPC的完整流程解析
  • ustd嵌入式C++轻量容器库:零堆分配、确定性实时的数组/队列/哈希表实现
  • Fish-Speech-1.5与Vue.js整合:构建语音合成Web应用
  • 智能客服大模型微调数据集制作实战:从数据清洗到高效标注的全流程优化
  • QWEN-AUDIO新手教程:如何用自然语言指令控制语音情绪?
  • 2026西南透水地坪优质厂家推荐榜:透水地坪厂家哪家好/透水地坪罩面剂厂家/透水材料混凝土厂家/透水混凝土增强剂厂家/选择指南 - 优质品牌商家
  • EspDn32Json:面向ESP32/ESP8266的零堆JSON解析库
  • 为什么你的Dify应用召回率暴跌37%?揭秘重排序阶段被忽略的3个隐式依赖:Token截断策略、Batch归一化偏差、Score温度系数漂移