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

链式前向星建图与搜索

链式前向星建图与搜索

很少使用这种建图法。\(\tt dfs\) :标准复杂度为 \(\mathcal O(N+M)\)。节点子节点的数量包含它自己(至少为 \(1\)),深度从 \(0\) 开始(根节点深度为 \(0\))。\(\tt bfs\) :深度从 \(1\) 开始(根节点深度为 \(1\))。\(\tt topsort\) :有向无环图(包括非联通)才拥有完整的拓扑序列(故该算法也可用于判断图中是否存在环)。每次找到入度为 \(0\) 的点并将其放入待查找队列。

namespace Graph {const int N = 1e5 + 7;const int M = 1e6 + 7;int tot, h[N], ver[M], ne[M];int deg[N], vis[M];void clear(int n) {tot = 0; //多组样例清空for (int i = 1; i <= n; ++i) {h[i] = 0;deg[i] = vis[i] = 0;}}void add(int x, int y) {ver[++tot] = y, ne[tot] = h[x], h[x] = tot;++deg[y];}void dfs(int x) {a.push_back(x); // DFS序siz[x] = vis[x] = 1;for (int i = h[x]; i; i = ne[i]) {int y = ver[i];if (vis[y]) continue;dis[y] = dis[x] + 1;dfs(y);siz[x] += siz[y];}a.push_back(x);}void bfs(int s) {queue<int> q;q.push(s);dis[s] = 1;while (!q.empty()) {int x = q.front();q.pop();for (int i = h[x]; i; i = ne[i]) {int y = ver[i];if (dis[y]) continue;d[y] = d[x] + 1;q.push(y);}}}bool topsort() {queue<int> q;vector<int> ans;for (int i = 1; i <= n; ++i)if (deg[i] == 0) q.push(i);while (!q.empty()) {int x = q.front();q.pop();ans.push_back(x);for (int i = h[x]; i; i = ne[i]) {int y = ver[i];--deg[y];if (deg[y] == 0) q.push(y);}}return ans.size() == n; //判断是否存在拓扑排序}
} // namespace Graph
http://www.jsqmd.com/news/21172/

相关文章:

  • 一般图最大匹配
  • CF2152G
  • 缩点(Tarjan 算法)
  • 平面图最短路(对偶图)
  • 多源汇最短路(APSP问题)
  • 最小生成树(MST问题)
  • 常见概念
  • 单源最短路径(SSSP问题)
  • CNCF项目记录2025-10
  • 代理
  • 双碳目标下,MyEMS 为何成为制造企业的 “刚需工具”?
  • 树上路径交
  • 10.23总结
  • 关于 vue项目 代理的坑;baseURL必须为空;代理才会生效
  • 点分治 / 树的重心
  • 10.21总结
  • 最近公共祖先 LCA
  • 题解:P3343 [ZJOI2015] 地震后的幻想乡
  • 暂存:P14214 [COI 2010] 圆圈 / KOLO
  • 树论大封装(直径+重心+中心)
  • QMPlayer2解析
  • 2025年10月广州单位办公室搬家公司全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 书评-谋杀黄昏
  • 徐州信息技术服务管理体系认证渠道口碑榜:聚焦机构资质、服务案例及合规性评估
  • 完整教程:【汽车篇】AI深度学习在汽车零部件外观检测——铝铸件中的应用
  • 附加数据文件失败:操作系统错误 5:“5(拒绝访问。)”。 CREATE DATABASE 失败。无法创建列出的某些文件名
  • 20251024- 使用shell脚本分库定时备份MySQL数据
  • 权威调研榜单:东莞工厂装修公司OP3榜单好评深度解析
  • 【Linux】倒计时和进度条完成
  • 2025年口碑好的FPC离型纸,环氧胶离型纸推荐TOP生产厂家