普及组集训--图论最短路径设分层图

P4568 [JLOI2011] 飞行路线 - 洛谷 | 计算机科学教育新生态

可以设置分层图:(伪代码)

cpp 复制代码
E(u,v)=w;无向图 
add(u,v,w),add(v,u,w);
for(j=1~k){
	add(u+jn,v+jn,w);
	add(v+jn,u+jn,w);
	add(u+jn-j,v+jn-j,0);
	add(v+jn-j,u+jn-j,0);
}

add(u+jn-j,v+jn-j,0); add(v+jn-j,u+jn-j,0); 是从上面的节点到下面相对应的节点为0;因为有k此转程,且不能够重复经过某一结点。建图用链式前向星,最短路径不要用spfa,要用dijkstra,而且要堆优化。

真建图方式:

cpp 复制代码
for(int i=0;i<m;i++){
       u=Read(),v=Read(),c=Read();
       add(u,v,c);
       add(v,u,c);
       for(int j=1;j<=k;j++){
           add(u+(j-1)*n,v+j*n,0);
           add(v+(j-1)*n,u+j*n,0);
           add(u+j*n,v+j*n,w);
           add(v+j*n,u+j*n,w);
       }
}
相关推荐
cynicme4 小时前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
im_AMBER7 小时前
算法笔记 09
c语言·数据结构·c++·笔记·学习·算法·排序算法
凯芸呢7 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea
寂静山林7 小时前
UVa 1030 Image Is Everything
算法
AI柠檬7 小时前
几种排序算法的实现和性能比较
数据结构·算法·c#·排序算法
weixin_429630268 小时前
第6章 支持向量机
算法·机器学习·支持向量机
SweetCode8 小时前
C++ 实现大数加法
开发语言·c++·算法
王哈哈^_^8 小时前
【数据集】【YOLO】【目标检测】共享单车数据集,共享单车识别数据集 3596 张,YOLO自行车识别算法实战训推教程。
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
CodeWizard~9 小时前
AtCoder Beginner Contest 430赛后补题
c++·算法·图论
大大dxy大大9 小时前
机器学习-KNN算法示例
人工智能·算法·机器学习