最短路(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 ...
随机推荐
- Code Chef MINPOLY(计算几何+dp)
题面 传送门 题解 我们枚举这个凸多边形\(y\)坐标最小的点\(p_i\),然后对于所有\(y\)坐标大于等于它的点极角排序 我们预处理出\(s_{j,k}\)表示三角形\(p_i,p_j,p_k\ ...
- centos7下 vsftpd初使用
一. 安装 1. 命令: yum -y install vsftpd 2. 创建一个用户专门用来登录vsftpd #在根目录下创建一个文件夹ftpfile mkdir ftpfile #创建用户ft ...
- ASP.NETCore学习记录(二) —— ASP.NET Core 中间件
ASP.NET Core 中间件 目录: 什么是中间件 ? IApplicationBuilder 使用 IApplicationBuilder 创建中间件 Run.Map 与 Use 方法 实战中间 ...
- CI框架入门笔记
当前(2019-03-22)CodeIgniter 框架的最新版本是 3.1.5,于2017年6月发布,距今快两年了也没有更新,这与 Laravel 的更新速度相比差距太大了.因为确实,它是一个很古老 ...
- SQL将原始数据进行MD5加密转存
先来描述下情况吧,首先有一批用户之前批量录入后默认的密码为6个8然后进行MD5加密后进行存储的,现在需要对其更改根据用户身份证号后6位作为密码. 1.首先发现我们sqlserver05以上的版本是自带 ...
- (转)深入浅出 RPC - 深入篇
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/mindfloating/article/details/39474123 <深入篇>我们 ...
- SpringMVC+FreeMarker+Mybatis 整合
这个项目自己有时写写测试代码什么的, 代码比较简单,代码已放在 github : https://github.com/zhouyongtao/homeinns-web 目录结构: 贴一下Maven的 ...
- koa2 接收post参数
koa2接收Post参数由于没有在上下文对象上解析,所以需要用node 原生req解析. 获取到的参数,要注意转码问题. const Koa = require('koa'); const app = ...
- 02 - JavaSE之基础及面向对象(补充)
引用数据类型 java中的数据类型可以分为 基本数据类型 和 引用数据类型 两大类 int float char boolean等都是基本数据类型 类类型都是引用数据类型 引用数据类型类似C语言中的指 ...
- tomcat 启动速度慢背后的真相
1. tomcat 启动慢 在线上环境中,我们经常会遇到类似的问题,就是tomcat 启动比较慢,查看内存和cpu,io都是正常的,但是启动很慢,有的时候长达几分钟,这到底是什么原因导致的. 1.1 ...