怎么硕呢

这俩肯定是一个人抄了另一个人的代码。就在花费那一部分  一个是d[u] = mp[u][v]+d[v] (迪杰斯特拉)  另一个是d[u] = mp[u][v]

大体思路就是一直找和以之节点相通的节点之间最省钱的路径就完了。

相比较克鲁斯卡尔来说,一个是以点展开验证边。而克鲁斯卡尔是以边为展开看连接点点是否属于都一个跟(并查集)

迪杰斯特拉:

#include<stdio.h>
#include<string.h>
#define INF 0x3f3f3f3f
//测试样例
//4 6
//1 2 1
//1 3 4
//1 4 1
//2 3 3
//2 4 2
//3 4 5
int vis[100];
int money[100][100];
int n;
void Dijkstra(int x)
{int v,u;int d[100];int p[100];memset(d,INF,sizeof(d));memset(vis,0,sizeof(vis));memset(p,-1,sizeof(p));d[x]=0;while(1){u=-1;int minv=INF;for(int i=0;i<n;i++){if(d[i]<minv&&vis[i]!=1){minv=d[i];u=i;}}if(u==-1) break;vis[u]=1;for(v=0;v<n;v++){if(money[u][v]!=INF&&vis[v]!=1){if(d[v]>money[u][v]+d[u]){d[v]=money[u][v]+d[u];p[v]=u;}}}}int sum=0;for(int i=0;i<n;i++){if(x==i) continue;printf("Dijkstra算法:%d点到%d点的最小花费为%d\n",x,i,d[i]); }}
int main()
{int i,j,m;scanf("%d %d",&n,&m);memset(money,INF,sizeof(money));for(i=0;i<m;i++){int x,y,z;scanf("%d %d %d",&x,&y,&z);money[x-1][y-1]=z;money[y-1][x-1]=z;}for(i=0;i<n;i++){printf("当出发点是%d时,到各个点的花费:\n",i); Dijkstra(i);}} 

普利姆:

#include<stdio.h>
#include<string.h>
#define INF 0x3f3f3f3f
//测试样例
//4 6
//1 2 1 1
//1 3 4 0
//1 4 1 1
//2 3 3 0
//2 4 2 1
//3 4 5 0
int vis[100];
int money[100][100];
int n;
void prim()
{int v,u;int d[100];int p[100];memset(d,INF,sizeof(d));memset(vis,0,sizeof(vis));memset(p,-1,sizeof(p));d[0]=0;while(1){u=-1;int minv=INF;for(int i=0;i<n;i++){if(d[i]<minv&&vis[i]!=1){minv=d[i];u=i;}}if(u==-1) break;vis[u]=1;for(v=0;v<n;v++){if(money[u][v]!=INF&&vis[v]!=1){if(d[v]>money[u][v]){d[v]=money[u][v];p[v]=u;}}}}int sum=0;for(int i=0;i<n;i++){if(p[i]!=-1) sum=sum+money[i][p[i]];}printf("prim算法:最小花费为%d",sum);
}
int main()
{int i,j,m;scanf("%d %d",&n,&m);memset(money,INF,sizeof(money));for(i=0;i<m;i++){int x,y,z;scanf("%d %d %d",&x,&y,&z);money[x-1][y-1]=z;money[y-1][x-1]=z;}prim();} 

(迪杰斯特拉)Dijkstra算法 与 普里姆算法(Prim算法)相关推荐

  1. 普里姆(Prim)算法

    普里姆(Prim)算法 普里姆(Prim)算法思想 普里姆(Prim)算法是一某个顶点为起点,逐步找各顶点最小权值的边来构建最小生成树. 换一种说法: 从任意一顶点 v0 开始选择其最近顶点 v1 构 ...

  2. java实现迪杰斯特拉(Dijkstra)算法求解最短路问题

    迪杰斯特拉(Dijkstra)算法是由荷兰计算机科学家狄克斯特拉于1959年提出的.是寻找从一个顶点到其余各顶点的最短路径算法,可用来解决最短路径问题. 迪杰斯特拉算法采用贪心算法的策略,将所有顶点分 ...

  3. 数据结构与算法(7-4)最短路径(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)

    目录 一.最短路径概念 二.迪杰斯特拉(Dijkstra)算法(单源最短路径) 1.原理 2.过程 3.代码 三.弗洛伊德(Floyd)算法(多源最短路径) 1.原理 2.存储 3.遍历 4.代码 参 ...

  4. 059.迪杰斯特拉(Dijkstra)算法的原理以及解决最短路径问题

    1. 迪杰斯特拉(Dijkstra)算法的原理 1.1. 算法应用场景-最短路径问题 1.2. 基本介绍 1.3. 步骤详解 1.4. 思路解析 1.5. 图解步骤 2. 迪杰斯特拉(Dijkstra ...

  5. java数据结构和算法——迪杰斯特拉(Dijkstra)算法

    目录 一.迪杰斯特拉(Dijkstra)算法介绍 二.迪杰斯特拉(Dijkstra)算法过程 三.迪杰斯特拉(Dijkstra)算法--应用场景(最短路径问题) 四.迪杰斯特拉(Dijkstra)算法 ...

  6. 迪杰斯特拉(Dijkstra)算法解决最短路径问题

    Dijkstra 算法介绍 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法.迪杰斯特拉(Dijkstra)算法是最经典的最短路径算法之一,用 ...

  7. c语言迪杰斯特拉算法求最短路径,迪杰斯特拉 ( Dijkstra ) 最短路径算法

    迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径.它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本 ...

  8. 最短路径算法-迪杰斯特拉(Dijkstra)算法

    最短路径算法-迪杰斯特拉(Dijkstra)算法 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先遍历思 ...

  9. Java迪杰斯特拉(Dijkstra)算法与弗洛伊德(Floyd)算法

    1.Java迪杰斯特拉(Dijkstra)算法与弗洛伊德(Floyd)算法 1.1 迪杰斯特拉(Dijkstra)算法 1.1.1 迪杰斯特拉(Dijkstra)算法介绍 迪杰斯特拉(Dijkstra ...

  10. 数据结构——图——迪杰斯特拉(Dijkstra )算法

    数据结构--图--迪杰斯特拉(Dijkstra )算法 这是一个按路径长度递增的次序产生最短路径的算法.它的思路大体是这样的. 比如说要求图7-7-3中顶点v0到顶点v1的最短距离,没有比这更简单的了 ...

最新文章

  1. SugarCRM 主表-自定义字段
  2. 进程线程006 Windows线程切换-线程优先级
  3. FatFs源码剖析(1)
  4. 如何用python批量下载数据_使用Python批量下载数据
  5. [vue] 在子组件中怎么访问到父组件的实例?
  6. python 模块 包 库_模块(包、库)
  7. C#网络编程示例(note)
  8. Python基础----Matplotlib
  9. 使用C#进行点对点通讯和文件传输(通讯基类部分+发送接收
  10. exchange边缘服务器的安装条件和介绍
  11. DataTables之TableTools插件
  12. 描写火车站场景_描写火车站人多的场景_描写火车站人多的作文
  13. html公历农历相互转换,JavaScript实现公历转换农历
  14. matlab 游戏手柄,QtGamepad模块与游戏手柄交互小示例
  15. 微信小程序textarea换行输入的文本,在view中如何换行渲染
  16. 修改element-UI 的 el-upload样式
  17. 被倒闭的湖北行星传动设备有限公司
  18. 虚拟机服务器怎么安装驱动程序不正常怎么办,虚拟机安装不上虚拟网络驱动怎么处理...
  19. 脑机接口2——原理和概念
  20. 10种不同类型的移动UI设计模式

热门文章

  1. matminer获取数据
  2. matlab根据据点分成区域,在绘制图形时,根据点坐标绘制的图形不再当前绘图区域的中间位置,可以用()命令沿着屏幕方向平移视图。...
  3. Android MVP 模式使用指南
  4. 23. 详解 FRRouting 的 IBGP 应用配置
  5. 医用隔离电源绝缘监测装置-安科瑞
  6. Python数据分析:手把手教你用Pandas生成可视化图表
  7. 狂神说网站免费获取500K币
  8. 瑞士天梭表于纽约、上海、东京、新加坡四地揭幕六家限时主题店
  9. python命令行执行 .py文件提示ModuleNotFoundError: No module named 'XXX' 解决方法
  10. 苹果手机变卡了怎么解决_iPhone手机变卡怎么办?五个解决方法你需要知道