hdu 2544 最短路(两点间最短路径)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2544
方法一:dijkstra算法,求两点之间最短路径。
/************************************************************************/
/*
hdu 最短路
两点之间最短路径
题目大意:dijkstra求两点之间最短路径。
*/
/************************************************************************/ #include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h> #define MAX 0xfffffff const int N = ;
int map[N][N];
int vis[N];
int dj[N];
int num,m,n; void build_map()
{
int a,b,c;
for (int i = ; i <= n; i++)
for (int j = i; j <= n; j++)
map[i][j] = map[j][i] = (i==j)?:MAX;
for (int i = ; i < m; i++)
{
scanf("%d%d%d",&a,&b,&c);
map[a][b] = map[b][a] = c;
} } int DJ()
{
int t = n;
int sum = ;
int min,k;
for (int i = ; i <= n; i++)
dj[i] = MAX;
int cur = ;
dj[cur] = ;
while()
{
min = MAX;
vis[cur] = ;
for (int i = ; i <= n; i++)
{
if(vis[i]==)continue;
if(dj[i]>map[i][cur]+dj[cur])
dj[i] = map[i][cur]+dj[cur];
if (dj[i]<min)
{
min = dj[i];
k = i;
}
}
cur = k;
if(k==n)break;
} return dj[n];
} int main()
{ while(scanf("%d%d",&n,&m) && (n!= && m!=) )
{
build_map();
memset(vis,,sizeof(vis));
printf("%d\n",DJ());
}
return ;
}
方法二:floyd算法,求两点之间最短距离, distance[i][j] = min(distance[i][j], distance[i][k]+distance[k][j]);借助中间点。
/************************************************************************/
/*
hdu 最短路
两点之间最短路径
题目大意:floyd算法,求得两点之间最短距离,(u,v) = min( (u,v),(v,w)+(w,v) );
*/
/************************************************************************/ #include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h> #define MIN(a,b) a<b?a:b
#define MAX 0xfffffff const int N = ;
int map[N][N];
int vis[N];
int dj[N];
int num,m,n; void build_map()
{
int a,b,c;
for (int i = ; i <= n; i++)
for (int j = i; j <= n; j++)
map[i][j] = map[j][i] = (i==j)?:MAX;
for (int i = ; i < m; i++)
{
scanf("%d%d%d",&a,&b,&c);
map[a][b] = map[b][a] = c;
} } int floyd()
{
for (int k = ; k <= n; k++)
{
for (int i = ; i <= n; i++)
for (int j = ; j <= n; j++)
map[i][j] = MIN(map[i][j],map[i][k] + map[k][j]);
}
return map[][n];
} int main()
{ while(scanf("%d%d",&n,&m) && (n!= && m!=) )
{
build_map();
memset(vis,,sizeof(vis));
printf("%d\n",floyd());
}
return ;
}
hdu 2544 最短路(两点间最短路径)的更多相关文章
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- JS广度优先查找无向无权图两点间最短路径
广度优先查找无向无权图两点间最短路径,可以将图看成是以起点为根节点的树状图,每一层是上一层的子节点,一层一层的查找,直到找到目标节点为止. 起点为0度,与之相邻的节点为1度,以此类推. // 广度优先 ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
- hdu 2544 最短路 (dijkstra,floyd)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目大意:找到两点间最短的距离值. 代码一:(dijkstra算法) #include < ...
- hdu 2544 最短路
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shi ...
- hdu 2544最短路——最短路的初次总结 UESTC 6th Programming Contest Online
这是一道标准的模板题,所以拿来作为这一段时间学习最短路的总结题目. 题意很简单: 有多组输入数据,每组的第一行为两个整数n, m.表示共有n个节点,m条边. 接下来有m行,每行三个整数a, b, c. ...
- HDu 2544 最短路【dijkstra & floyed & SPFA 】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2544最短路 (迪杰斯特拉算法)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others) Me ...
随机推荐
- Spring Cloud Eureka集群 动态扩展新节点
场景描述: Eureka的集群节点有两个,互相注册形成集群,已经支持动态刷新(不知道怎么让Eureka支持动态刷新的可以参考http://www.cnblogs.com/flying607/p/845 ...
- 【CAS单点登录视频教程】 第05集 -- CAS服务器安装
第一步: 下载cas 服务器 cas-server-3.5.2-release.zip 目录 ----------------------------------------- [CAS单点登录视频教 ...
- empty、isset、is_null的比较
直接上代码 <?php $a=0; $b='0'; $c=0.0; $d=''; $e=NULL; $f=array(); $g='\0'; $h=' ';//space $i=true; $j ...
- C语言中的随意跳转
C语言中有一个很不常用的头文件:setjmp.h. 这个头文件是C语言底层实现的,不像math.h里面的函数都是纯C语言实现的. setjmp.h包含两个函数: longjmp 跳转到某个位置 set ...
- linux shell 脚本攻略学习9--rename命令详解
rename命令详解: 对文件重命名是常用的操作之一,一般对单个文件的重命名用mv命令,如: amosli@amosli-pc:~/learn/example$ ls abc.txt amosli@a ...
- zabbix3.0 安装时出现PHP Parse error: syntax error
httpd的错误日志 [Sun Mar :: ] [error] [client 由于系统yum默认安装的php版本是5.3.3 zabbix 3.0支持的平台,只支持php5.4以上的版本https ...
- TripleDES之C#和PHP之间加密解密
在C#常用加密解密一文中,介绍了几个加密解密方法,其中有个如何使用对称加密算法DES,此次说下DES的升级版,TripleDES. DES和TripleDES之间的关系可以参考下面的博文. 对称加密D ...
- CentOS7下解决ifconfig command not found
原文地址:https://blog.csdn.net/ryu2003/article/details/78492127 注:本办法仅限于可联网的机器,即在安装时设置了IP地址和DNS可正常上网. 解决 ...
- mysql 查询 根据时分秒取数据 比如 取 时间为 8点半的 dateformat 时间函数转换
date_format(date,'%H') = 8 and date_format(date,'%i') = 30 SELECT * FROM `t_pda_trucklog` WHERE D ...
- svn搭建本地服务端
使用VisualSVN Server来完成,下载地址:https://www.visualsvn.com/server/download/ 我安装的版本是3.3.1,安装的时候选择了标准版本,另外一个 ...