题目描述
罗老师被邀请参加一个舞会,是在城市 n,而罗老师当前所处的城市为 1,附近还有很多城市 2 ~ n-1,

有些城市之间没有直接相连的路,有些城市之间有直接相连的路,这些路都是双向的,当然也可能有多条。

现在给出直接相邻城市的路长度,罗老师想知道从城市 1 到城市 n,最短多少距离。

输入格式
输入 n, m,表示 n 个城市和 m 条路;
接下来 m 行,每行 a b c, 表示城市 a 与城市 b 有长度为 c 的路。

输出格式
输出 1 到 n 的最短路,如果 1 到达不了 n,就输出 -1。

输入样例
5 5
1 2 20
2 3 30
3 4 20
4 5 20
1 5 100

输出样例
90

数据范围
1 ≤ n ≤ 2000,1 ≤ m ≤ 10000,0 ≤ c ≤ 10000


题解
dijkstra(朴素版):

#include <iostream>
#include <cstring>
using namespace std;const int N = 2010;int n, m;
bool st[N];
int g[N][N], dist[N];int dijkstra()
{memset(dist, 0x3f, sizeof dist);dist[1] = 0;for (int i = 0; i < n; i ++){int t = -1;for (int j = 1; j <= n; j ++)if(!st[j] && (t == -1 || dist[j] < dist[t]))t = j;st[t] = true;for (int j = 1; j <= n; j ++)dist[j] = min(dist[j], dist[t] + g[t][j]);     }if(dist[n] == 0x3f3f3f3f) return -1;return dist[n];
}int main()
{cin >> n >> m;memset(g, 0x3f, sizeof g);while(m --){int a, b, c;cin >> a >> b >> c;g[a][b] = g[b][a] = min(g[a][b], c);}if(dijkstra() == -1) cout << -1 << endl;else cout << dist[n] << endl;return 0;
}

题解二
dijkstra(堆优化)&& 链式前向星:

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;const int N = 2010, M = 20010;typedef pair<int, int> PII;int n, m;
bool st[N];
int dist[N];
int h[N], w[M], e[M], ne[M], idx;void add(int a, int b, int c)
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}int dijkstra()
{memset(dist, 0x3f, sizeof dist);dist[1] = 0;priority_queue<PII, vector<PII>, greater<PII> > q;q.push({0, 1});while(q.size()){PII t = q.top();q.pop();int u = t.second, distance = t.first;if(st[u]) continue;st[u] = true;for (int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(dist[j] > dist[u] + w[i]){dist[j] = dist[u] + w[i];q.push({dist[j], j});}}}if (dist[n] == 0x3f3f3f3f) return -1;return dist[n];
}int main()
{cin >> n >> m;memset(h, -1, sizeof h);while(m --){int a, b, c;cin >> a >> b >> c;add(a, b, c), add(b, a, c);}cout << dijkstra() << endl;return 0;
}

城市路(信息学奥赛一本通 - T1381)相关推荐

  1. 城市路(信息学奥赛一本通-T1381)

    [题目描述] 罗老师被邀请参加一个舞会,是在城市n,而罗老师当前所处的城市为1,附近还有很多城市2~n-1,有些城市之间没有直接相连的路,有些城市之间有直接相连的路,这些路都是双向的,当然也可能有多条 ...

  2. 友好城市(信息学奥赛一本通-T1263)

    [题目描述] Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同. 每对友好城市都向政府申请 ...

  3. 信息学奥赛一本通(题解目录)

    信息学奥赛一本通(题解目录) 记录了我从初学者到逐渐熟悉c++的成长之路 信息学奥赛一本通OJ 目录 信息学奥赛一本通(题解目录) 前言 一.语言及算法基础篇 基础(一) C++语言 第一章 C++语 ...

  4. 信息学奥赛一本通 1263:【例9.7】友好城市

    [题目链接] ybt 1263:[例9.7]友好城市 [题目考点] 1. 动态规划:线性动规 2. 排序 [解题思路] 该题可以抽象为两条平行线上各有若干点,给定一些两条线上点之间的连线,在选出连线不 ...

  5. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  6. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  7. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例

    题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...

  8. 信息学奥赛一本通(C++版)NOIP提高组(1820-1829)

    信息学奥赛一本通(C++版)NOIP提高组目录 //1820 [题目描述] 我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所 处位置的(值减1)为指数,以10为底数的幂之和的 ...

  9. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

最新文章

  1. 控制C++的内存分配
  2. [MATLAB]从已知矩阵中取出子阵
  3. php中int()强制转换,php下intval()和int强制转换使用的区别是什么
  4. 如果女朋友突然问你DNS是个啥...
  5. Synergy软件的基本配置/使用(详细教程)
  6. css3 选择器_CSS 3
  7. 来一个可能防止恶意采集和爬虫的SH
  8. 员工薪酬管理设计方案
  9. dev c++ Boost库的安装
  10. 11988 - Broken Keyboard (a.k.a. Beiju Text)
  11. Exception in thread main java.lang.NoClassDefFoundError: org/slf4j/helpers/NOPLoggerFactory错误解决方...
  12. object.__new__
  13. 每日算法系列【LeetCode 16】最接近的三数之和
  14. 【渝粤教育】国家开放大学2018年春季 0420-22T酒店管理概论 参考试题
  15. 基于java web的学生考勤带请假管理系统——计算机毕业设计
  16. mfc入门基础(三)创建对话框
  17. 域名被抢注了怎么办?
  18. python和mysql匹配吗_python使用mysql
  19. Ant工具 ant的安装与配置 ant作用
  20. Windows环境下编译pjsip

热门文章

  1. 7-6厘米换算英尺英寸
  2. 数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)
  3. 动视解析现代战争3 成功因团队强
  4. 提升html5的性能体验系列之一避免切页白屏
  5. excel求方差和标准差的函数_Excel标准差_计算函数Stdev和StdevP的使用方法
  6. blog Manager 后台管理系统
  7. 设置Excel单元格行宽列高
  8. HNUST 计算机组成原理课设
  9. android打地鼠案例
  10. 送餐路线规划数学建模