拓扑排序学习(复习)笔记
拓扑排序求出的一个序列满足所有有关系的节点中,指向的在前面,被指向的在后面。如果完全没关系那不一定前后。
具体操作,就是先把入度为的节点加入队列,然后对于队列中某个节点指向的节点,它的入度减。如果入度减到,那么也加入队列。它处理的是有向图,可以判断是否有环(如果队列长度小于节点个数,那么有环)
拓扑排序求最长路,和普通的其实差不多。直接dis[y]=max(dis[y],dis[x]+z)
即可。(可以代替SPFA
,防止被卡)
伪代码如下:
for (int i = 1; i <= n; i ++ )
{
dis[i] = -1e9;
if (!rd[i]) qq.push(i);
}
dis[s] = 0;
while (!qq.empty())
{
int x = qq.front(); qq.pop();
for (int i = hd[x]; i; i = nxt[i])
{
int y = to[i], z = 1;
dis[y] = max(dis[y], dis[x] + z);
rd[y] -- ;
if (rd[y] == 0) qq.push(y);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】