图论之最短路径Dijkstra算法
/**
图论之最短路径Dijkstra算法
*/
#include<string.h>
#include<stdio.h>
#include<vector>
#include<queue> using namespace std; const int MAXN = 200;
const int INF = 0x7fffffff;
struct Edge
{
int to ;
int length;
Edge(int t, int l):to(t), length(l) {}
};
vector<Edge> graph[MAXN];
int dis[MAXN];
bool visit[MAXN]; void Dijkstra (int start, int n)
{
memset(visit, false, sizeof(visit));
fill(dis, dis+n, INF);
dis[start] = 0; for(int i=0;i<n;i++)
{
int u=-1;
for(int j=0;j<n;j++)
{
if(visit[j]) continue;
if(u == -1 || dis[j]<dis[u])
{
u = j;
} }
for(int j=0;j<graph[u].size();j++)
{
int v = graph[u][j].to;
int d = graph[u][j].length;
if(dis[u] + d < dis[v])
{
dis[v] = dis[u] + d;
}
}
visit[u] = true;
}
return ;
}
int main ()
{
int n,m;
scanf("%d%d",&n,&m);
memset(graph, 0, sizeof(graph));
while(m--)
{
int from, to, length;
scanf("%d%d%d", &from, &to, &length);
graph[from].push_back(Edge(to, length));
graph[to].push_back(Edge(from, length));
}
int start, terminal;
scanf("%d%d",&start, &terminal);
Dijkstra(start, n);
if(dis[terminal] == INF)
{
dis[terminal] = -1;
}
printf("%d\n",dis[terminal]);
return 0;
}
/**
3 3
0 1 1
0 2 3
1 2 1
0 2
输出2
3 1
0 1 1
1 2
输出-1
*/
图论之最短路径Dijkstra算法的更多相关文章
- 数据结构实验之图论七:驴友计划 ( 最短路径 Dijkstra 算法 )
数据结构实验之图论七:驴友计划 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...
- 网络最短路径Dijkstra算法
最近在学习算法,看到有人写过的这样一个算法,我决定摘抄过来作为我的学习笔记: <span style="font-size:18px;">/* * File: shor ...
- 单源最短路径Dijkstra算法,多源最短路径Floyd算法
1.单源最短路径 (1)无权图的单源最短路径 /*无权单源最短路径*/ void UnWeighted(LGraph Graph, Vertex S) { std::queue<Vertex&g ...
- 最短路径-Dijkstra算法与Floyd算法
一.最短路径 ①在非网图中,最短路径是指两顶点之间经历的边数最少的路径. AE:1 ADE:2 ADCE:3 ABCE:3 ②在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径 ...
- 最短路径——Dijkstra算法以及二叉堆优化(含证明)
一般最短路径算法习惯性的分为两种:单源最短路径算法和全顶点之间最短路径.前者是计算出从一个点出发,到达所有其余可到达顶点的距离.后者是计算出图中所有点之间的路径距离. 单源最短路径 Dijkstra算 ...
- 有向网络(带权的有向图)的最短路径Dijkstra算法
什么是最短路径? 单源最短路径(所谓单源最短路径就是只指定一个顶点,最短路径是指其他顶点和这个顶点之间的路径的权值的最小值) 什么是最短路径问题? 给定一带权图,图中每条边的权值是非负的,代表着两顶点 ...
- Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...
- 图论——最短路径 Dijkstra算法、Floyd算法
1.弗洛伊德算法(Floyd) 弗洛伊算法核心就是三重循环,M [ j ] [ k ] 表示从 j 到 k 的路径,而 i 表示当前 j 到 k 可以借助的点:红色部分表示,如果 j 到 i ,i 到 ...
- 图论篇3——最短路径 Dijkstra算法、Floyd算法
最短路径 问题背景:地图上有很多个城市,已知各城市之间距离(或者是所需时间,后面都用距离了),一般问题无外乎就是以下几个: 从某城市到其余所有城市的最短距离[单源最短路径] 所有城市之间相互的最短距离 ...
- 求两点之间最短路径-Dijkstra算法
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.D ...
随机推荐
- Datawhale组队学习_Task01:概览西瓜书+南瓜书第1、2章
第一章 绪论 1.1引言 打开书,五分钟后,合上书:嗯!学会了!如何判断一个好瓜 1.2基本术语 分类:对离散值进行预测的学习任务,是有监督学习的代表 回归:对连续值进行预测的学习任务,是有监督学习的 ...
- Kafka教程(二)API开发-生产者、消费者、topic
一.地址 1.实时更新的思维导图 https://www.mubucm.com/doc/4uqlpedefuj 2.图片 二.具体内容 5.producer生产者 demo 发送pro.s ...
- 【Java EE】Day02 MySQL概念、软件、语句
〇.总结 1. 一.数据库的基本概念 1.概念 用于存储和管理数据的仓库 特点: 持久化存储,本质是文件系统 方便存储和管理数据 使用统一方式(MySQL)操作 常见的数据库软件: MySQL:Ora ...
- Hexo博客搭建和简单部署
title: Hexo博客搭建和简单部署 date: 2020-03-02 12:00:00 categories: - [IT,博客] - [IT,软件,程序] - [IT,软件,搭建与配置] ta ...
- 解决PC 拖动浏览器或者应用时CPU占用过高问题
电脑配置5800X.6800XT.win11在用edge或chrome只打开百度和博客园首页的情况下,长按来回拖动浏览器窗口,会发现CPU占用直线上升.能直接从4%变成70-80%导致系统卡住...我 ...
- Qt开发Active控件:如何使用ActiveQt Server开发大型软件的主框架(2)
Qt开发Active控件:如何使用ActiveQt Server开发大型软件的主框架 注:本文更多地是带着如何去思考答案,而不是纯粹的放一个答案上来,如果你需要直接看到完整的答案,请直接看实例和最后的 ...
- C++基础语法学习:STL
基础语法学习,少点比较,多些谦虚 1.容器: 常见的容器有以下几类: 1.vector:向量 2.deque:双端队列 3.list:列表 4.set:集合 5:multiset:多重集合 6.map ...
- openresty package path
openresty lua_package_path 是整个openresty最基础的功能,不理解 path就无法做项目,更无法写框架. 先看下文档lua_package_path https://g ...
- 知识分享-消息中间件详解+rabbitMQ
知识分享-消息中间件详解+rabbitMQ 消息中间件 概述 消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步.可靠的消息传输的支撑性软件系统. 应用场景 异步处理 对于电商a ...
- vue elementui弹框内 富文本编辑器的使用,及踩坑
最近vue项目中遇到弹框内使用富文本编辑器,遇到最大的问题是,在打开弹框后才能创建富文本编辑器,并且只能创建一次,多次点击弹框,报错: Error in v-on handler: "Err ...