最短路(hdu2544)Dijkstra算法二
最短路
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24283 Accepted Submission(s): 10465
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #define INF 0xfffffff//很大的数,16进制 f代表15;
- #define MAX 1005
- using namespace std;
- int map[MAX][MAX];
- int visit[MAX],dis[MAX];
- int N,M,n;
- int Dijkstra()
- {
- int i,j;
- // memset(visit,false,sizeof(visit)); 31ms 所以可以不写memset就不写
- for(i=;i<=n;i++)
- {
- dis[i]=map[][i];
- visit[i]=false; // 15ms
- }
- dis[]=;
- visit[]=true;
- for(i=;i<=n;i++)
- {
- int tmp=INF;
- int k;
- for(j=;j<=n;j++)
- if(!visit[j]&&dis[j]<tmp)
- tmp=dis[k=j];
- //if(tmp==INF) break; //调试的时候用
- visit[k]=true;
- for(j=;j<=n;j++)
- {
- if(!visit[j]&&dis[j]>dis[k]+map[k][j])
- dis[j]=dis[k]+map[k][j];
- }
- }
- return dis[n];
- }
- int main()
- {
- int i,j,k,a,b,time;
- while(scanf("%d%d",&N,&M),N||M)
- {
- for(i=;i<MAX;i++)
- for(j=;j<MAX;j++)
- map[i][j]=INF;
- for(i=;i<=M;i++)
- {
- scanf("%d%d%d",&a,&b,&time);
- if(time<map[a][b])
- map[a][b]=map[b][a]=time;//双向的
- }
- n=N+;
- map[][]=map[][]=;
- map[n][N]=map[N][n]=;
- printf("%d\n",Dijkstra());
- }
- return ;
- }
真的是模版不信,你看我源代码:
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #define INF 0xfffffff//很大的数,16进制 f代表15;
- #define MAX 1005
- using namespace std;
- int map[MAX][MAX];
- int visit[MAX],dis[MAX];
- int N,M,n;
- int Dijkstra()
- {
- int i,j;
- // memset(visit,false,sizeof(visit)); 31ms 所以可以不写memset就不写
- for(i=;i<=n;i++)
- {
- dis[i]=map[][i];
- visit[i]=false; // 15ms
- }
- dis[]=;
- visit[]=true;
- for(i=;i<=n;i++)
- {
- int tmp=INF;
- int k;
- for(j=;j<=n;j++)
- if(!visit[j]&&dis[j]<tmp)
- tmp=dis[k=j];
- //if(tmp==INF) break; //调试的时候用
- visit[k]=true;
- for(j=;j<=n;j++)
- {
- if(!visit[j]&&dis[j]>dis[k]+map[k][j])
- dis[j]=dis[k]+map[k][j];
- }
- }
- return dis[n];
- }
- int main()
- {
- int i,j,k,a,b,time;
- while(scanf("%d%d",&N,&M),N||M)
- {
- for(i=;i<MAX;i++)
- for(j=;j<MAX;j++)
- map[i][j]=INF;
- // n=0;
- for(i=;i<=M;i++)
- {
- scanf("%d%d%d",&a,&b,&time);
- if(time<map[a][b])
- map[a][b]=map[b][a]=time;//双向的
- // if(a>n) n=a;
- // if(b>n) n=b;
- }
- // n++;// 最大地点数+1
- n=N+;
- /* for(i=1;i<=S;i++)
- {
- scanf("%d",&a);
- map[0][a]=map[a][0]=0;//与原点相连的,距离为0;
- }
- for(i=1;i<=D;i++)
- {
- scanf("%d",&a);
- map[n][a]=map[a][n]=0;//终点n到想去的地方的距离是0;
- }*/
- map[][]=map[][]=;
- map[n][N]=map[N][n]=;
- printf("%d\n",Dijkstra());
- }
- return ;
- }
刚刚开始学习,要好好看代码;理解透才行。。。
最短路(hdu2544)Dijkstra算法二的更多相关文章
- 最短路和次短路问题,dijkstra算法
/* *题目大意: *在一个有向图中,求从s到t两个点之间的最短路和比最短路长1的次短路的条数之和; * *算法思想: *用A*求第K短路,目测会超时,直接在dijkstra算法上求次短路; ...
- 单源最短路:Dijkstra算法 及 关于负权的讨论
描述: 对于图(有向无向都适用),求某一点到其他任一点的最短路径(不能有负权边). 操作: 1. 初始化: 一个节点大小的数组dist[n] 源点的距离初始化为0,与源点直接相连的初始化为其权重,其他 ...
- Dijkstra算法(二)之 C++详解
本章是迪杰斯特拉算法的C++实现. 目录 1. 迪杰斯特拉算法介绍 2. 迪杰斯特拉算法图解 3. 迪杰斯特拉算法的代码说明 4. 迪杰斯特拉算法的源码 转载请注明出处:http://www.cnbl ...
- HDOJ 2544 最短路(最短路径 dijkstra算法,SPFA邻接表实现,floyd算法)
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- [Swust OJ 842]--实验室和食堂(最短路,Dijkstra算法)
题目链接:http://acm.swust.edu.cn/problem/842/ Time limit(ms): 1000 Memory limit(kb): 10000 Description ...
- 最短路之 Dijkstra 算法
普通的 Dijkstra 这是一种运用贪心的单源最短路算法,就是求从一个节点出发,到任意一个点的最短距离 首先我们要一个图 假设要求从 1 开始的单源最短路 dis[] 表示最短路数组, vis[] ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
- 最短路之Dijkstra算法
1. 邻接矩阵 int cost[MAX_V][MAX_V]; //assume cost[u][v]>0 int d[MAX_V]; bool used[MAX_V]; void Dijkst ...
- hdu2544 最短路 Dijkstra算法
最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
随机推荐
- 利用adb 打开手机应用程序
通过adb打开android应用,我们需要做的第一步,就是查看当前app的入口,第二部,就是通过命令启动我们的app入口 查看app的启动画面 在运行下面命令时,先启动想要通过adb打开的app #查 ...
- KVM虚拟机配置
KVM 全称是 Kernel-Based Virtual Machine.也就是说 KVM 是基于 Linux 内核实现的,KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存. 在 ...
- Windows 出现了回声 & 微软账号无法登陆
Windows 出现了回声,第一反应是杜比音效偷偷背着我开启了客厅模式(后面看了下并没有这个模式,后话了...). 再我尝试打开它发现提示网络无法连接,于是我就直接卸载了,但回声依能没有解决. 后面我 ...
- python 多版本管理pyenv和virtualenv虚拟开发环境
pyenv是管理多个python版本的工具. 1.pyenv的安装 git clone https://github.com/yyuu/pyenv.git ~/.pyenv 2.将PYENV_ROOT ...
- 线性表java实现
顺序表 public class SequenceList { /* * content,节点内容 * location,节点在表中的位置(序号) * */ private String conten ...
- 关于使用 IDEA Spring Boot 热部署
1,POM 中引用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...
- javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法)
javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法) 一.快速排序算法 /* * 这个函数首先检查数组的长度是否为0.如果是,那么这个数组就不需要任何排序,函数直接返回. * ...
- odoo开发笔记 -- 异常信息处理汇总
1 Traceback (most recent call last): File , in _handle_exception return super(JsonRequest, self)._ha ...
- How To Scan QRCode For UWP (1)
本文将介绍实现一个类似于微信扫一扫功能的UI界面,后续会再实现具体的识别二维码的功能. 实例使用的Win10 SDK Version是Windows 10 Anniversary Edition(10 ...
- Elasticsearch使用filter进行匹配关系and,or,not,range查询
RESTful接口URL的格式: http://localhost:9200/<index>/<type>/[<id>] 其中index.type是必须提供的. i ...