首页 > 其他分享 >最短路径

最短路径

时间:2023-12-08 17:49:05浏览次数:32  
标签:pre int 路径 cin next edge 最短 dis

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int N=1010;
struct edge{
int v,w;
edge* next;
};
struct node{
int k;
edge* next;
}a[1010];
int n;
int find(int u)
{
for(int i=0;i<n;i++){
if(a[i].k==u){
return i;
}
}
return -1;
}
void add(int u,int v,int w)
{
edge* e=new edge();
e->v=v;
e->w=w;
e->next=a[u].next;
a[u].next=e;
}
int dis[N],pre[N];
bool st[N];
void dijkstra(int u){
memset(pre,-1,sizeof pre);
memset(dis,0x3f,sizeof dis);
dis[u]=0;
for(int i=0;i<n-1;i++)
{
int k=-1;
for(int j=0;j<n;j++){
if(st[j]==0&&(k==-1||dis[j]<dis[k])){
k=j;
}
}
if(dis[k]==0x3f3f3f3f){
continue;
}
st[k]=1;
for(edge* j=a[k].next;j!=NULL;j=j->next){
int v=j->v,w=j->w;
if(dis[v]>dis[k]+w){
dis[v]=dis[k]+w;
pre[v]=k;
}
}
}
}
void showRoad(int v){
if(pre[v]!=-1){
showRoad(pre[v]);
cout<<"-->"<<a[v].k;
}else{
cout<<a[v].k;
}
}
int main(){
int m;
cin>>n>>m;
for(int i=0;i<n;i++){
int k;
cin>>k;
a[i].k=k;
}
for(int i=0;i<m;i++){
int u,v,w;
cin>>u>>v>>w;
int uu=find(u),vv=find(v);
add(uu,vv,w);
}
int u,v;
cin>>u>>v;
dijkstra(u);
showRoad(v);
return 0;
}

标签:pre,int,路径,cin,next,edge,最短,dis
From: https://www.cnblogs.com/zh-ang-zhang/p/17888682.html

相关文章

  • 路径规划算法 - 求解最短路径 - A*(A-Star)算法
    Dijkstra(迪杰斯特拉)算法A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。A*算法是一个“搜索算法”,实质上是广度优先搜索算法(BFS)的优化A*算法的作用是“求解最短路径......
  • 【Docker】更改docker镜像的存储路径
    1.查看Docker存储路径dockerinfo|grep"DockerRootDir"2.关闭所有运行的容器···dockerps|awk'{print$1}'|xargsdockerstop···3.停止docker服务systemctlstopdocker4.新增的磁盘挂载点上新建目录,并将原有的docker容器和镜像全部拷贝过来,比如这里新增......
  • 最短路
    单源最短路:求一个点到其他点的最短路多源最短路:求任意两个点的最短路稠密图用邻接矩阵存,稀疏图用邻接表存储。稠密图:m和n2一个级别稀疏图:m和n一个级别朴素dij:intn,m,s,a,b,c;constintN=100010;structedge{intv,w;};vector<edge>e[N];intd[N],vis[N];......
  • wamp修改站点路径,php服务器修改路径
    一、修改apache目录下载好WampServer后,它默认网站根目录是:“D:/wamp/www”(示例若不同点击右下角的wampserver有个www目录即默认网站根目录)打个比方,我现在要把网站根目录改为“E:/study”1.打开 D:\wamp\bin\apache\apache2.4.23\conf(本机示例)中的httd.conf......
  • Spring MVC 的路径匹配策略
    spring.mvc.pathmatch.matching-strategy=ant_path_matcher是一个配置项,用于设置SpringMVC的路径匹配策略。在这个例子中,它设置为使用AntPathMatcher(Ant风格的路径匹配器)。AntPathMatcher是一种基于Ant构建工具的路径匹配算法,它可以支持更灵活的路径模式匹配。通过将......
  • 【SpringBootWeb入门-6】请求响应-请求参数-数组集合参数&Json参数&路径参数
    这篇我们接着上一篇的请求参数来讲解另外几个常见参数的接收以及封装:数组集合参数、Json参数、路径参数。数组集合参数1、数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数在Postman接口测试新建测试,获取请求数组参数type。然后新建参数处......
  • 17_二叉树的所有路径
    二叉树的所有路径给你一个二叉树的根节点root,按任意顺序,返回所有从根节点到叶子节点的路径。叶子节点是指没有子节点的节点。示例1:输入:root=[1,2,3,null,5]输出:["1->2->5","1->3"]示例2:输入:root=[1]输出:["1"]【思路】题目要求从根节点到叶子的路径,所以需要......
  • 路径规划算法 - 求解最短路径 - Dijkstra算法
    Dijkstra算法的思想是广度优先搜索(BFS)贪心策略。是从一个顶点到其余各顶点的最短路径算法,节点边是不各自不同的权重,但都必须是正数如果是负数,则需要Bellman-Ford算法如果想求任意两点之间的距离,就需要用Floyd算法求节点0->4的最短路径每次从未标记的节点中选择距离......
  • 从字符串中分离文件路径,文件名及文件扩展名
    从字符串中分离文件路径,文件名及文件扩展名如一个文件:D:\文档\C#BASE\StringBuilder.md要分离出文件路径:D:\文档\C#BASE\文件名:StringBuilder文件扩展名:md这是我们要拿到“\”和“.”这两个字符最后出现的索引stringpath="D:\文档\C#BASE\StringBuilder.md";inti=path.la......
  • Linux查找java安装路径
    先看java-version$javaversion"1.8.0_111"Java(TM)SERuntimeEnvironment(build1.8.0_111-b14)JavaHotSpot(TM)64-BitServerVM(build25.111-b14,mixedmode)然后:echo$JAVA_HOME不一定有如果没有,那就要找一下先$whichjava/usr/bin/java再找到/usr/bin/java的超链接......