题目描述

给出一个图的邻接矩阵,输入顶点v,用迪杰斯特拉算法求顶点v到其它顶点的最短路径。

输入

第一行输入t,表示有t个测试实例

第二行输入顶点数n和n个顶点信息

第三行起,每行输入邻接矩阵的一行,以此类推输入n行

第i个结点与其它结点如果相连则为距离,无连接则为0,数据之间用空格

隔开。第四行输入v0,表示求v0到其他顶点的最短路径距离

以此类推输入下一个示例

输出

对每组测试数据,输出:

每行输出v0到某个顶点的最短距离和最短路径

每行格式:v0编号-其他顶点编号-最短路径值----[最短路径]。没有路径输出:v0编号-其他顶点编号--1。具体请参考示范数据

样例输入

2
5 0 1 2 3 4
0 5 0 7 15
0 0 5 0 0
0 0 0 0 1
0 0 2 0 0
0 0 0 0 0
0
6 V0 V1 V2 V3 V4 V5
0 0 10 0 30 100
0 0 5 0 0 0
0 0 0 50 0 0
0 0 0 0 0 10
0 0 0 20 0 60
0 0 0 0 0 0
V0

样例输出

0-1-5----[0 1 ]
0-2-9----[0 3 2 ]
0-3-7----[0 3 ]
0-4-10----[0 3 2 4 ]
V0-V1--1
V0-V2-10----[V0 V2 ]
V0-V3-50----[V0 V4 V3 ]
V0-V4-30----[V0 V4 ]
V0-V5-60----[V0 V4 V3 V5 ]

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=100,INF=0x3f3f3f3f;
int t;
map<string,int> mp;
map<int,string> ins;class GRAPH{
public:int n,w[maxn][maxn],dist[maxn],st;bool vis[maxn];string path[maxn];GRAPH(){cin>>n;for(int i=0;i<n;i++){string x;cin>>x;mp[x]=i;ins[i]=x;}for(int i=0;i<n;i++){vis[i]=false;dist[i]=INF;for(int j=0;j<n;j++){cin>>w[i][j];}}}void getpath(){string start;cin>>start;st=mp[start];dist[st]=0;for(int i=0;i<n;i++){path[i]+=ins[st]+" ";if(i!=st && w[st][i]){path[i]+=ins[i]+" ";dist[i]=w[st][i];}}vis[st]=true;for(int k=0;k<n-1;k++){int res,dis=INF;for(int i=0;i<n;i++){if(!vis[i] && dis>dist[i]){res=i;dis=dist[i];}}for(int i=0;i<n;i++){if(!vis[i] && dist[i]>dist[res]+w[res][i] && w[res][i]){dist[i]=dist[res]+w[res][i];path[i]=path[res];path[i]+=ins[i]+" ";}}vis[res]=true;}}void display(){for(int i=0;i<n;i++){if(i==st) continue;if(dist[i]==INF){dist[i]=-1;cout<<ins[st]<<"-"<<ins[i]<<"-"<<dist[i]<<endl;}else cout<<ins[st]<<"-"<<ins[i]<<"-"<<dist[i]<<"----["<<path[i]<<"]\n";}}
};int main(){cin>>t;while(t--){GRAPH g;g.getpath();g.display();}return 0;
}

DS图—图的最短路径(不含代码框架)相关推荐

  1. DS二叉树——Huffman编码与解码(不含代码框架)

    题目描述 1.问题描述 给定n个字符及其对应的权值,构造Huffman树,并进行huffman编码和译(解)码. 构造Huffman树时,要求左子树根的权值小于.等于右子树根的权值. 进行Huffma ...

  2. 【id:180】【20分】D. DS二叉树--赫夫曼树解码(不含代码框架)

    题目描述 已知赫夫曼编码算法和程序,在此基础上进行赫夫曼解码 在赫夫曼树的类定义中增加了一个公有方法: int  Decode(const string codestr, char txtstr[]) ...

  3. 【id:179】【20分】C. DS二叉树--赫夫曼树的构建与编码(不含代码框架)

    题目描述 给定n个权值,根据这些权值构造huffman树,并进行huffman编码 参考课本P147算法6.12 HuffmanCoding代码,注意数组访问是从位置1开始 要求:赫夫曼的构建中,默认 ...

  4. ASoC Platform驱动代码框架图

    原址 [前言] 在更深入地阅读了工程中 Audio 部分的驱动代码之后,整理出了一个 ASoC Platform 驱动代码的框架图.类似的 ASoC Machine驱动代码框架图在<ASoC M ...

  5. ASoC Machine驱动代码框架图

    原址 [前言] 较久之前写了一篇<Linux ASoC音频驱动架构 及 Machine驱动代码分析>,那个时候刚开始接触 ALSA,文章写得很粗糙.这段时间以来新看了 HAL层.Frame ...

  6. ASoC Codec驱动代码框架图

    原址 [前言] 上个月写了<Audio驱动开发 之 Codec芯片ALC5677驱动代码分析>,但是感觉那个时候理解得还不够深入.写得很粗糙.这一个月以来新看了 HAL层.Framewor ...

  7. 动图图解C语言插入排序算法,含代码分析

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

  8. 动图图解C语言选择排序算法,含代码分析

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

  9. 数据结构—图(Part Ⅱ)—最小生成树 最短路径

    目录 最小生成树 普里姆(Prim)算法 算法实现 运行结果 程序分析 克鲁斯卡尔(Kruskal)算法 算法实现 运行结果 程序分析 最短路径 广度优先搜索(BFS)算法 算法实现 运行结果 程序分 ...

最新文章

  1. 动态规划:求最大公共子串
  2. python中矩阵与向量的区别
  3. 我用python是什么梗_Python中的一些梗
  4. 5、优化MySQL服务器
  5. 第三次学JAVA再学不好就吃翔(part31)--super关键字
  6. scrapy 让指定的spider执行指定的pipeline
  7. 批处理命令Start
  8. Python3中异常处理和try/except,try/finally的用法
  9. 基于JAVA+Servlet+JSP+MYSQL的图书馆座位预约系统
  10. win11退回win10一直黑屏转圈怎么办 win11退回win10黑屏转圈的解决方法
  11. 图像语义分割(9)-DeepLabV3: 再次思考用于图像语义分割的空洞卷积
  12. C语言程序员面试100题,c语言面试最必考的十道试题,求职必看!!!
  13. 文献检索是利用计算机对文献,文献检索计算机课.ppt
  14. 【愚公系列】2022年10月 .Net Core使用cpolar内网穿透功能实现钉钉回调事件的监听
  15. 不同网络下 一台电脑连接另一台电脑的mysql数据库
  16. 我在阿里做数据分析师,一位阿里数据分析师的日常
  17. turtle画樱花树林
  18. 15条中国人不熟悉的投资理念
  19. 字符串(1) : 首字母转大写/小写
  20. Toolbar添加菜单栏Menu

热门文章

  1. 膨胀卷积(空洞卷积)学习篇
  2. app通过电商变现方式探讨
  3. 哪款蓝牙耳机音质好?内行推荐四款高音质蓝牙耳机
  4. csust2019集训队选拔赛题解
  5. 【工程理论】引线键合机介绍
  6. linux概述及环境搭建
  7. python中次方怎么表示_python中n次方怎么表示
  8. pdf在线翻译_24个PDF在线小工具,免费在线翻译PDF文档。
  9. 如何免费获取文件高速下载直链
  10. 《XX项目产品需求说明书-精华版》