[hiho 23]单源最短路-Dijstra算法
2015-05-31 23:34
686 查看
题目描述
维护一个集合,集合中的元素与点u的最短距离已经确定,求出集合内元素所能到达的点到点u的距离,取最短的距离对应的点加入集合直到集合包含点v。
每次更新距离只与新加入集合的点有关。
维护一个集合,集合中的元素与点u的最短距离已经确定,求出集合内元素所能到达的点到点u的距离,取最短的距离对应的点加入集合直到集合包含点v。
每次更新距离只与新加入集合的点有关。
#include <stdio.h> #include <string.h> #include <algorithm> #define N 1005 unsigned w ; int main(){ memset(w, -1, sizeof(w)); int n, m, u, v; scanf("%d%d%d%d", &n, &m, &u, &v); int from, to; unsigned weight; for (int i = 0; i < m; i++) { scanf("%d%d%u", &from, &to, &weight); weight = std::min(weight, w[from][to]); w[from][to] = w[to][from] = weight; } int min_idx; unsigned min; while (true) { min_idx = 1; min = w[u][1]; for (int i = 2; i <= n; i++) { if (min > w[u][i]) { min = w[u][i]; min_idx = i; } } for (int i = 1; i <= n; i++) { if (w[min_idx][i] != (unsigned)-1) { w[u][i] = std::min(w[u][i], w[u][min_idx] + w[min_idx][i]); } } if (min_idx == v) { break; } else { w[u][min_idx] = -1; } } printf("%u\n", w[u][v]); return 0; }
相关文章推荐
- 自定义属性作业——带缩略图的轮播切换——JS学习笔记2015-5-31(第44天)
- Javascript原型模式总结梳理
- js之iframe子页面与父页面通信
- js对象私有变量公有变量问题
- Jsonp post 跨域方案
- jsp web.xml文件的作用及基本配置
- 在jsp页面生成二维码
- [LeetCode][JavaScript]Jump Game II
- javascript高级程序设计笔记1
- seajs使用教程指南
- js实现年月日三级联动
- json和jsonp的联系和区别(转载)
- 过滤输入——JS总结
- 【javascript】DOM小结
- JavaScript中的setInterval用法
- Javascript 严格模式详解
- json_encode在设计api时需要注意的问题
- JavaScript 标识符
- js给对象标签添加事件&方法的封装
- 常用跨浏览器设置——JS总结