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

最长路(topsort+DP算法)

最长路(topsort+DP算法)

计算一张 \(\tt DAG\) 中的最长路径,在执行前可能需要使用 \(\tt tarjan\) 重构一张正确的 \(\tt DAG\) ,复杂度 \(\mathcal O(N+M)\)

struct DAG {int n;vector<vector<pair<int, int>>> ver;vector<int> deg, dis;DAG(int n) : n(n) {ver.resize(n + 1);deg.resize(n + 1);dis.assign(n + 1, -1E18);}void add(int x, int y, int w) {ver[x].push_back({y, w});++deg[y];}int topsort(int s, int t) {queue<int> q;for (int i = 1; i <= n; i++) {if (deg[i] == 0) {q.push(i);}}dis[s] = 0;while (!q.empty()) {int x = q.front();q.pop();for (auto [y, w] : ver[x]) {dis[y] = max(dis[y], dis[x] + w);--deg[y];if (deg[y] == 0) {q.push(y);}}}return dis[t];}
};signed main() {int n, m;cin >> n >> m;DAG dag(n);for (int i = 1; i <= m; i++) {int x, y, w;cin >> x >> y >> w;dag.add(x, y, w);}int s, t;cin >> s >> t;cout << dag.topsort(s, t) << "\n";
}
http://www.hskmm.com/?act=detail&tid=38013

相关文章:

  • 二分图最大匹配
  • 最短路径树(SPT问题)
  • 欧拉路径/欧拉回路 Hierholzers
  • 无源汇点的最小割问题 Stoer–Wagner
  • CF2152G
  • 染色法判定二分图 (dfs算法)
  • 链式前向星建图与搜索
  • 一般图最大匹配
  • 平面图最短路(对偶图)
  • 多源汇最短路(APSP问题)
  • 最小生成树(MST问题)
  • 缩点(Tarjan 算法)
  • 常见概念
  • 单源最短路径(SSSP问题)
  • CNCF项目记录2025-10
  • 关于 vue项目 代理的坑;baseURL必须为空;代理才会生效
  • 点分治 / 树的重心
  • 最近公共祖先 LCA
  • QMPlayer2中的类,数据结构
  • QMPlayer2解析
  • 2025年10月广州单位办公室搬家公司全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 附加数据文件失败:操作系统错误 5:“5(拒绝访问。)”。 CREATE DATABASE 失败。无法创建列出的某些文件名
  • 书评-谋杀黄昏
  • 20251024- 使用shell脚本分库定时备份MySQL数据
  • 权威调研榜单:东莞工厂装修公司OP3榜单好评深度解析
  • 徐州信息技术服务管理体系认证渠道口碑榜:聚焦机构资质、服务案例及合规性评估
  • 2025年口碑好的FPC离型纸,环氧胶离型纸推荐TOP生产厂家
  • 2025年口碑好的数字地磅,电子汽车衡地磅厂家推荐及选择建议
  • 二分
  • 权威调研榜单:四氟换热器生产厂家TOP3榜单好评深度解析