最短路

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24283    Accepted Submission(s): 10465

Problem Description
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?
 
Input
输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员需要C分钟的时间走过这条路。 输入保证至少存在1条商店到赛场的路线。
 
Output
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间
 
Sample Input
2 1
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0
 
Sample Output
3
2
 
 
Dijkstra算法,第二题。和hdu2066相似;ps:http://www.cnblogs.com/yuyixingkong/p/3455931.html哈哈!秒过。
晚上继续努力。
详见代码:

  1. #include<iostream>
  2. #include<cstring>
  3. #include<cstdio>
  4. #define INF 0xfffffff//很大的数,16进制 f代表15;
  5. #define MAX 1005
  6. using namespace std;
  7. int map[MAX][MAX];
  8. int visit[MAX],dis[MAX];
  9. int N,M,n;
  10. int Dijkstra()
  11. {
  12. int i,j;
  13. // memset(visit,false,sizeof(visit)); 31ms 所以可以不写memset就不写
  14. for(i=;i<=n;i++)
  15. {
  16. dis[i]=map[][i];
  17. visit[i]=false; // 15ms
  18. }
  19. dis[]=;
  20. visit[]=true;
  21. for(i=;i<=n;i++)
  22. {
  23. int tmp=INF;
  24. int k;
  25. for(j=;j<=n;j++)
  26. if(!visit[j]&&dis[j]<tmp)
  27. tmp=dis[k=j];
  28. //if(tmp==INF) break; //调试的时候用
  29. visit[k]=true;
  30. for(j=;j<=n;j++)
  31. {
  32. if(!visit[j]&&dis[j]>dis[k]+map[k][j])
  33. dis[j]=dis[k]+map[k][j];
  34. }
  35. }
  36. return dis[n];
  37. }
  38. int main()
  39. {
  40. int i,j,k,a,b,time;
  41. while(scanf("%d%d",&N,&M),N||M)
  42. {
  43. for(i=;i<MAX;i++)
  44. for(j=;j<MAX;j++)
  45. map[i][j]=INF;
  46. for(i=;i<=M;i++)
  47. {
  48. scanf("%d%d%d",&a,&b,&time);
  49. if(time<map[a][b])
  50. map[a][b]=map[b][a]=time;//双向的
  51. }
  52.  
  53. n=N+;
  54. map[][]=map[][]=;
  55. map[n][N]=map[N][n]=;
  56. printf("%d\n",Dijkstra());
  57. }
  58. return ;
  59. }

真的是模版不信,你看我源代码:

  1. #include<iostream>
  2. #include<cstring>
  3. #include<cstdio>
  4. #define INF 0xfffffff//很大的数,16进制 f代表15;
  5. #define MAX 1005
  6. using namespace std;
  7. int map[MAX][MAX];
  8. int visit[MAX],dis[MAX];
  9. int N,M,n;
  10. int Dijkstra()
  11. {
  12. int i,j;
  13. // memset(visit,false,sizeof(visit)); 31ms 所以可以不写memset就不写
  14. for(i=;i<=n;i++)
  15. {
  16. dis[i]=map[][i];
  17. visit[i]=false; // 15ms
  18. }
  19. dis[]=;
  20. visit[]=true;
  21. for(i=;i<=n;i++)
  22. {
  23. int tmp=INF;
  24. int k;
  25. for(j=;j<=n;j++)
  26. if(!visit[j]&&dis[j]<tmp)
  27. tmp=dis[k=j];
  28. //if(tmp==INF) break; //调试的时候用
  29. visit[k]=true;
  30. for(j=;j<=n;j++)
  31. {
  32. if(!visit[j]&&dis[j]>dis[k]+map[k][j])
  33. dis[j]=dis[k]+map[k][j];
  34. }
  35. }
  36. return dis[n];
  37. }
  38. int main()
  39. {
  40. int i,j,k,a,b,time;
  41. while(scanf("%d%d",&N,&M),N||M)
  42. {
  43. for(i=;i<MAX;i++)
  44. for(j=;j<MAX;j++)
  45. map[i][j]=INF;
  46. // n=0;
  47. for(i=;i<=M;i++)
  48. {
  49. scanf("%d%d%d",&a,&b,&time);
  50. if(time<map[a][b])
  51. map[a][b]=map[b][a]=time;//双向的
  52. // if(a>n) n=a;
  53. // if(b>n) n=b;
  54. }
  55.  
  56. // n++;// 最大地点数+1
  57. n=N+;
  58.  
  59. /* for(i=1;i<=S;i++)
  60. {
  61. scanf("%d",&a);
  62. map[0][a]=map[a][0]=0;//与原点相连的,距离为0;
  63. }
  64.  
  65. for(i=1;i<=D;i++)
  66. {
  67. scanf("%d",&a);
  68. map[n][a]=map[a][n]=0;//终点n到想去的地方的距离是0;
  69. }*/
  70. map[][]=map[][]=;
  71. map[n][N]=map[N][n]=;
  72. printf("%d\n",Dijkstra());
  73. }
  74. return ;
  75. }

刚刚开始学习,要好好看代码;理解透才行。。。

 

最短路(hdu2544)Dijkstra算法二的更多相关文章

  1. 最短路和次短路问题,dijkstra算法

    /*  *题目大意:  *在一个有向图中,求从s到t两个点之间的最短路和比最短路长1的次短路的条数之和;  *  *算法思想:  *用A*求第K短路,目测会超时,直接在dijkstra算法上求次短路; ...

  2. 单源最短路:Dijkstra算法 及 关于负权的讨论

    描述: 对于图(有向无向都适用),求某一点到其他任一点的最短路径(不能有负权边). 操作: 1. 初始化: 一个节点大小的数组dist[n] 源点的距离初始化为0,与源点直接相连的初始化为其权重,其他 ...

  3. Dijkstra算法(二)之 C++详解

    本章是迪杰斯特拉算法的C++实现. 目录 1. 迪杰斯特拉算法介绍 2. 迪杰斯特拉算法图解 3. 迪杰斯特拉算法的代码说明 4. 迪杰斯特拉算法的源码 转载请注明出处:http://www.cnbl ...

  4. HDOJ 2544 最短路(最短路径 dijkstra算法,SPFA邻接表实现,floyd算法)

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  5. [Swust OJ 842]--实验室和食堂(最短路,Dijkstra算法)

    题目链接:http://acm.swust.edu.cn/problem/842/ Time limit(ms): 1000 Memory limit(kb): 10000   Description ...

  6. 最短路之 Dijkstra 算法

    普通的 Dijkstra 这是一种运用贪心的单源最短路算法,就是求从一个节点出发,到任意一个点的最短距离 首先我们要一个图 假设要求从 1 开始的单源最短路 dis[] 表示最短路数组, vis[] ...

  7. HDU - 2544最短路 (dijkstra算法)

    HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...

  8. 最短路之Dijkstra算法

    1. 邻接矩阵 int cost[MAX_V][MAX_V]; //assume cost[u][v]>0 int d[MAX_V]; bool used[MAX_V]; void Dijkst ...

  9. hdu2544 最短路 Dijkstra算法

    最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

随机推荐

  1. 利用adb 打开手机应用程序

    通过adb打开android应用,我们需要做的第一步,就是查看当前app的入口,第二部,就是通过命令启动我们的app入口 查看app的启动画面 在运行下面命令时,先启动想要通过adb打开的app #查 ...

  2. KVM虚拟机配置

    KVM 全称是 Kernel-Based Virtual Machine.也就是说 KVM 是基于 Linux 内核实现的,KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存. 在 ...

  3. Windows 出现了回声 & 微软账号无法登陆

    Windows 出现了回声,第一反应是杜比音效偷偷背着我开启了客厅模式(后面看了下并没有这个模式,后话了...). 再我尝试打开它发现提示网络无法连接,于是我就直接卸载了,但回声依能没有解决. 后面我 ...

  4. python 多版本管理pyenv和virtualenv虚拟开发环境

    pyenv是管理多个python版本的工具. 1.pyenv的安装 git clone https://github.com/yyuu/pyenv.git ~/.pyenv 2.将PYENV_ROOT ...

  5. 线性表java实现

    顺序表 public class SequenceList { /* * content,节点内容 * location,节点在表中的位置(序号) * */ private String conten ...

  6. 关于使用 IDEA Spring Boot 热部署

    1,POM 中引用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...

  7. javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法)

    javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法) 一.快速排序算法 /* * 这个函数首先检查数组的长度是否为0.如果是,那么这个数组就不需要任何排序,函数直接返回. * ...

  8. odoo开发笔记 -- 异常信息处理汇总

    1 Traceback (most recent call last): File , in _handle_exception return super(JsonRequest, self)._ha ...

  9. How To Scan QRCode For UWP (1)

    本文将介绍实现一个类似于微信扫一扫功能的UI界面,后续会再实现具体的识别二维码的功能. 实例使用的Win10 SDK Version是Windows 10 Anniversary Edition(10 ...

  10. Elasticsearch使用filter进行匹配关系and,or,not,range查询

    RESTful接口URL的格式: http://localhost:9200/<index>/<type>/[<id>] 其中index.type是必须提供的. i ...