交付之前必须验什么
把一个最短路或 MST 的解交出去,必须先验【0】。
五项一起对得上吗
运行下面这段程序: def build(edges): g = {} for a, b, w in edges: g.setdefault(a, []).append((b, w)) g.se
第一步:Dijkstra 求最短路和路径
最终作品第一步:写出 build、dijkstra、dij_path,输出 0 到 4 的最短总长和那条路径(路径用 - 连)。
第二步:负权上换算法
在那个有负权边的图上,用 Dijkstra 和 Bellman-Ford 各求一次 0 到 3。 输出三样:Dijkstra 的答案 / Bellman-Ford 的答案 / 是否相同。
第三步:两种 MST 互相印证
写出 Kruskal 和 Prim,在同一组边上各求一次。 输出三样:Kruskal 总长 / Prim 总长 / 边集是否相同。
第四步:拆掉一条边试试
分别拆掉 2-4(最贵,权重 9)和 0-2(最便宜,权重 1),各重新算一次最小总长,两个数拼起来输出(拆最贵的在前)。
交付:导航 + 联网一起验收
这是这条路线的最终作品。把前四步的代码合起来,一次验完五条: 0 到 4 的最短总长是 6,路径是 0-1-3-4——**不是**步数最少那条 0-2-4 负权图上 Dijkstra 给 5,Bellman-Ford 给 3,两者不一致 那
有向图里说「有环」,指的是什么
一条链表首尾接上了、一张无向图里有个三角形、一张有向图里有环——最后这一个说的是【0】。
合法的顺序为什么不止一种
箭头一改,就开不了工 排得开 排不开 同一批依赖,我排出一个顺序,你排出另一个,两个都对。原因是【0】。
⚠️ 两个顺序都合法,拿什么判断对不对
箭头一改,就开不了工 排得开 排不开 批改一份拓扑排序的作业,学生给的顺序和参考答案不一样。判断他对不对,看的是【0】。