题目: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 最短路(两点间最短路径)的更多相关文章

  1. ACM: HDU 2544 最短路-Dijkstra算法

    HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descrip ...

  2. UESTC 30 &&HDU 2544最短路【Floyd求解裸题】

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

  3. JS广度优先查找无向无权图两点间最短路径

    广度优先查找无向无权图两点间最短路径,可以将图看成是以起点为根节点的树状图,每一层是上一层的子节点,一层一层的查找,直到找到目标节点为止. 起点为0度,与之相邻的节点为1度,以此类推. // 广度优先 ...

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

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

  5. hdu 2544 最短路 (dijkstra,floyd)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目大意:找到两点间最短的距离值. 代码一:(dijkstra算法) #include < ...

  6. hdu 2544 最短路

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shi ...

  7. hdu 2544最短路——最短路的初次总结 UESTC 6th Programming Contest Online

    这是一道标准的模板题,所以拿来作为这一段时间学习最短路的总结题目. 题意很简单: 有多组输入数据,每组的第一行为两个整数n, m.表示共有n个节点,m条边. 接下来有m行,每行三个整数a, b, c. ...

  8. HDu 2544 最短路【dijkstra &amp; floyed &amp; SPFA 】

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

  9. HDU 2544最短路 (迪杰斯特拉算法)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others)    Me ...

随机推荐

  1. linux下编译upx 3.93

    昨天,UPX发布了3.93版本. UPX(the Ultimate Packer for eXecutables)是一个非常全面的可执行文件压缩软件,支持dos/exe.dos/com.dos/sys ...

  2. Fiddler配置https

    问题描述: fiddler加载认证不成功... 问题解决: 手工生成认证证书 00.配置HTTPS 01.勾选https 02.添加ssh认证 11. 找到fiddler的安装目录 手工生成认证秘钥 ...

  3. Arduino和C51开发DHT11温湿度传感器

    技术:51单片机.Arduino.DHT11.温湿度传感器.传感器   概述 学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产 ...

  4. update pm storage

    BEGIN #Routine body goes here... INSERT INTO EMS_PM_STORAGE ( AMOID, GP_BEGIN_TIME, EMS_RECORD_TIME, ...

  5. SpringMVC multipart文件上传

    一.介绍   spring内建的multipart支持网络程序文件上传.我们可以通过配置MultipartResolver来启动上传支持.它定义在org.springframework.web.mul ...

  6. ext3, ext4 和 reiserfs 文件系统性能对比

    : 创建空文件10000个的耗时 创建小文件,每个小文件使用512个blocks,一共创建10000个 创建一个2G文件的耗时 复制2G文件的耗时 删除2G大文件的耗时 删除10000个小文件的耗时 ...

  7. 使用Java调用JS

    import junit.framework.TestCase; import javax.script.ScriptEngine; import javax.script.ScriptEngineM ...

  8. win32 socket之select

    之前光看理论是不行滴,一定要实践,实践啊,不然永远都是门外汉!! 嗯嗯,把找到的一段源码贴上先,稍微修改了一下: #include <winsock.h> #include <std ...

  9. 寻找自己的道路——与技术同胞共勉 一种划分为七个阶段的道路:自信=>意志=>布局=>切入点=>团队=>渠道=>产品

    寻找自己的道路——与技术同胞共勉 每个人的幸福都是不一样的.我喜欢田园式的生活,在人多的地方总是不舒服. 对我来说,最幸福莫过于在工作中做着自己喜欢的事情.闲暇时,在能够眺望江边的地方,端着一杯红酒, ...

  10. WIFEXITED WEXITSTATUS WIFSIGNALED(转)

    wait的函数原型是: #include #include pid_t wait(int *status) 进 程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出 ...