题目:从节点N到节点1的求最短路径。

分析:这道题陷阱比较多,首先是输入的数据,第一个是表示路径条数,第二个是表示节点数量,在 这里WA了四次。再有就是多重边,要取最小值。最后就是路径的长度的最大值不是100,而是100001。用Dijkstra求最短路径,感觉 Dijkstra和Prim很像,都是从结点中找到路径最小的一条,然后再做某种更新。Dijkstra是看看源节点通过当前节点能否缩短从源头到其他节 点的路径,而Prim则是通过加入当前节点到生成树,然后更新生成树中的路径数量,再从中找到最小路径。

package Map;

import java.util.Scanner;

/**
* Dijkstra最短路径
*/
public class Poj_2387_Dijkstra { static int n, m;
static int MAXV = 2010;
static int MAX = 100001; static int map[][] = new int[MAXV][MAXV];
static boolean vis[] = new boolean[MAXV]; public static int dijksrta(int V) { vis[V] = true;
for (int i = 1; i <= n; i++) {
int min = MAX;
int k = 0;
for (int j = 1; j <= n; j++) {
if (!vis[j] && map[V][j] < min) {
min = map[V][j];
k = j;
}
}
vis[k] = true;
for (int j = 1; j <= n; j++) {
if (!vis[j] && min + map[k][j] < map[V][j]) {
map[V][j] = min + map[k][j];
}
}
}
return map[V][1];
} public static void main(String args[]) {
Scanner sc = new Scanner(System.in); m = sc.nextInt();
n = sc.nextInt(); for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
map[i][j] = MAX;
}
map[i][i] = 0;
}
for (int i = 1; i <= m; i++) {
int s = sc.nextInt();
int e = sc.nextInt();
int val = sc.nextInt();
if(map[s][e] > val){ //重边问题,去最小的
map[s][e] = val;
map[e][s] = val;
}
}
System.out.println(dijksrta(n));
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. docker 启动安装等命令
  2. Gbase数据库备份与还原
  3. 使用dbms_logmnr查看日志文件
  4. linux 目录说明
  5. TaobaoProtect.exe,Alipaybsm.exe进程删除----让流氓软件滚粗
  6. git操作标签
  7. FZU 2243 Daxia like uber
  8. Luogu4149:[IOI2011]Race
  9. L1-Day10
  10. mac 电脑进入root用户
  11. Scrapy中集成selenium
  12. 【CodeForces 730H】Car Repair Shop
  13. MySQL高级02
  14. Tomcat学习总结(2)——Tomcat使用详解
  15. Populating Next Right Pointers in Each Node II leetcode java
  16. css 初始包含块
  17. stm32 DMA配置
  18. caffe 代码阅读笔记1
  19. 在jsp页面上打印错误堆栈
  20. 利用Octopress在Github上搭建博客及后续问题总汇

热门文章

  1. java经典30笔试题
  2. 连接池Connection timed out
  3. 【P1369】矩形(贪心)
  4. java深入探究16-mybatis
  5. 手动用maven安装jar的命令
  6. Windows下软件调试
  7. Spring Cloud遇到的坑——服务状态为DOWN
  8. VS2013打包安装(InstallShield Limited Edition for Visual Studio 2013 )
  9. U14739 X ask Y III 子区间异或和
  10. ural 2019 Pair: normal and paranormal