博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU2544 最短路
阅读量:4626 次
发布时间:2019-06-09

本文共 2054 字,大约阅读时间需要 6 分钟。

最短路最基础的题啦,刚学会拿来练习~~~

用的Dijkstra算法【目前就会这一个Orz

#include 
#include
#include
using namespace std;const int MAX = 105;const int INF = 0x7ffffff;int mp[MAX][MAX];int vis[MAX];int dis[MAX];int dij(int n){ int m, k; memset(vis, 0, sizeof(vis)); for (int i = 0; i < n; i++) { dis[i] = mp[0][i]; } vis[0] = 1; for (int i = 1; i < n; i++) { m = INF; k = 1; for (int j = 0; j < n; j++) { if (!vis[j] && m > dis[j]) { m = dis[j]; k = j; } } vis[k] = 1; if (k == n - 1) return m; for (int j = 0; j < n; j++) { if (!vis[j] && dis[j] > dis[k] + mp[k][j]) { dis[j] = dis[k] + mp[k][j]; } } } return dis[n - 1];}int main(){ int m, n; int a, b, c; while (scanf("%d%d", &n, &m) == 2 && (m || n)) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j) mp[i][j] = 0; else mp[i][j] = INF; } } for (int i = 0; i < m; i++) { scanf("%d%d%d", &a, &b, &c); if (mp[a - 1][b - 1] > c) mp[a - 1][b - 1] = mp[b - 1][a - 1] = c; } int ans = dij(n); printf("%d\n", ans); } return 0;}

我目前理解的Dijkstra算法就是用一个数组(dis[])来存各点到起点的距离,然后找一个离起点最近的点,标记访问,(vis[])用这个点来刷新其他点到起点的距离,然后继续找一个离起点,循环,直到终点被访问~

有一点不明白,0x7fffffff不是int的最大值么,为什么我const int INF = 0x7fffffff;就WAconst int INF = 0x7ffffff;就AC了……记得问问学长……

——————更新分割线————-
用0x7f7777777会WA的原因是因为已经是int的最大值,再加一个数就溢出了。

for (int j = 0; j < n; j++){    if (!vis[j] && dis[j] > dis[k] + mp[k][j])    {
dis[j] = dis[k] + mp[k][j]; }}

就是这里。

要保证不溢出就要比int小路径最长值,此题的话,每条路径长度范围C(1<=C<=1000),路口数N(N<=100),所以INF最大也只能是int最大值减C*N,即

const int INF = 0x7fffffff - 1000 * 100;

^ ^~欢迎批评指正~~

转载于:https://www.cnblogs.com/wenruo/p/4492697.html

你可能感兴趣的文章
结对第一次—原型设计(文献摘要热词统计)
查看>>
selenium +python 对table的操作
查看>>
get提交时中文传值乱码的有关问题
查看>>
Node.js初体验
查看>>
百度之星 1004 Labyrinth
查看>>
crm创建报告补充导航
查看>>
几种开源分词工具的比較
查看>>
等于null和长度0有区别,null不能调用任何方法,如Tostring 和.length 源于checkbox的未勾选返回值为null,勾选的返回值为on...
查看>>
项目管理专业 知识点总结(三)
查看>>
关于Android 打开新的Activity 虚拟键盘的弹出与不弹出
查看>>
“万能数据库查询分析器”在四大软件下载网站的排行榜中均入围前10,可喜可贺...
查看>>
和菜鸟一起学linux总线驱动之smartcard操作模式和协议与参数选择
查看>>
android 开发工具(转)
查看>>
python中的uuid4
查看>>
CSS 必知的7个知识点
查看>>
asp.net mvc 生成条形码
查看>>
单调队列
查看>>
Attribute value is quoted with " which must be escaped when used within the value 问题解决
查看>>
作业01
查看>>
web学习记录-JS-12
查看>>