HDU-2544 最短路 Dijkstra模板题
题目链接:https://vjudge.net/problem/HDU-2544
题意:
题目要求找到节点1到节点n之间的一条最短路
分析:
Dijkstra模板题
单源最短路径,可以用dijkstra(当然Floyd或者其他也可以),首先初始化节点间距离数组map和访问记录数组vis,然后录入并存储当前已知点间距离,再使用dijsktra算法以起始点为中心向外层层扩展(广度优先搜索思想),不断更新最短距离,直到扩展到终点为止。最后得到的dis[n]即为起点1至终点n的最短距离。
代码如下:
#include <cstdio>
#include<iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = ;
int map[maxn][maxn], dis[maxn];
bool vis[maxn];
int n, m; void init() {
for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
if(i == j)
map[i][j] = ;
else
map[i][j] = INF;
}
}
memset(vis, , sizeof(vis));
} void dijkstra() {
for(int i = ; i <= n; i++) {
dis[i] = map[][i]; //dis表示起点1至点i的当前最短路径,初始为map[1][i]
}
for(int i = ; i <= n-; i++) {
int min = INF, p;
for(int j = ; j <= n; j++) { //在此循环中找到与1距离最短的节点
if(vis[j] == && dis[j] < min) { //如果点j没有访问过,且1->j距离最短
min = dis[j]; //更新当前最短距离
p = j; //更新最短距离节点
}
}
vis[p] = ; //标记p已被访问
for(int j = ; j <= n; j++) { //在此循环中根据之前找到的最短距离点
if(vis[j] == && dis[p]+map[p][j] < dis[j]) {//把其他点更新一遍
dis[j] = dis[p]+map[p][j]; //更新最短路径
}
}
}
} int main(void) {
while(scanf("%d%d", &n, &m) == && n+m) {
init();
int u, v, w;
for(int i = ; i <= m; i++) {
scanf("%d%d%d", &u, &v, &w);
if(w < map[u][v])
map[u][v] = map[v][u] = w;
}
dijkstra();
printf("%d\n", dis[n]);
}
}
HDU-2544 最短路 Dijkstra模板题的更多相关文章
- HDU 2544最短路dijkstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2544 最短路(模板题——Floyd算法)
题目: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你 ...
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- hdu 2544 hdu 1874 poj 2387 Dijkstra 模板题
hdu 2544 求点1到点n的最短路 无向图 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 ...
- hdu 2544 最短路 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...
- HDOJ/HDU 2544 最短路---dijkstra算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 这题的思路可以见这里(同一类型):http://blog.csdn.net/xiaozhuaix ...
- HDU 2544 最短路(dijkstra+邻接矩阵)
( ̄▽ ̄)" #include<iostream> #include<cstdio> using namespace std; const int INF=10e7; ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
随机推荐
- 剑指offer自学系列(一)
题目描述:输入n个整数,找出其中最小的k个数,例如,输入{4,5,1,6,2,7,3,8}这8个数字,最小的4个数字是1,2,3,4 题目分析:首先我能想到的是先对数组排序,从小到大,然后直接输出想要 ...
- netty权威指南学习笔记四——TCP粘包/拆包之粘包问题解决
发生了粘包,我们需要将其清晰的进行拆包处理,这里采用LineBasedFrameDecoder来解决 LineBasedFrameDecoder的工作原理是它依次遍历ByteBuf中的可读字节,判断看 ...
- jQuery实现图片放大镜效果
实现图片放大镜的原理: 给放大镜元素一个对应的html元素为<div class='right'> 设置这个div的宽高固定为某个值(350px,350px) 设置div的css为超出部分 ...
- winfrom窗体的透明度
在VS中创建一个Winform项目,其默认的窗体名称为 Form1. 在VS设计界面中对 Form1 的 Opacity 属性值设置为 50%. 没错,就这样就可以了. 方法2: ...
- PHP笔记01
php 环境 xamp wamp phpstudy等集成软件网上很多 PHP基础语法 PHP语法是以<?php开始 ?>结束的//php 文件的默认扩展名是.php 例如(用PHP输出he ...
- 修改element-ui里table中悬浮框中三角号的颜色及透明度设置
.el-tooltip__popper,.el-tooltip__popper.is-dark{background:rgba(0,0,0,0.6) !important;} .el-tooltip_ ...
- tornado反向解析
tornado反向解析 在路由中添加name属性,并且不能使用元组路由,应当由tornado.web.url定义路由. app = tornado.web.Application([ (r'/', I ...
- 基础语法-循环结构for
基础语法-循环结构for 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.for循环格式 for(初始化表达式;循环条件表达式;循环后的操作表达式){ 执行语句(循环体); } ...
- Python 中 使用 HTMLTestRunner 模块生成测试报告
使用 HTMLTestRunner 模块可以生成测试报告,但是系统自带的报告不详细,不好看,所以找了一份详细的报告 HTMLTestRunner 模板,直接导入就能使用 两种方法生成HTML报告,都 ...
- CocoaPods安装/卸载/初始化等常用操作
CocoaPods的官网:https://cocoapods.org/,官方指导文档https://guides.cocoapods.org/ 1)ruby gem源更换国内源gems.ruby-ch ...