hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874
/************************************************************************/
/*
hdu 畅通工程续
dijkstra求起始点到目标点最短距离
题目大意:求这些村子中从起始位置到目标点的最短距离
解题思路:dijkstra算法,求图中两个点的最短距离,
dijkstra算法不同于prim算法,prim算法是求虽小生成树,
不断地把点最近的点加入到集合中;而dijkstra算法是求源点到目标点的最短距离。
*/
/************************************************************************/ #include <stdio.h>
#include <string.h>
#include <algorithm> #define MAX 0xfffffff
const int N = ; int dj[N],map[N][N],vis[N];
int n,m,x,y,len,i,j; void DJ(int start,int end)
{
int min,k;
int t = n;
int cur = start; for(i=;i<n;dj[i++]=MAX);
dj[start] = ;
while()
{
min = MAX;
vis[cur] = ;
for(i = ; i < n; i++)
{
if(vis[i]==)continue;
if(dj[i] > map[i][cur] + dj[cur])//////////
dj[i] = map[i][cur] + dj[cur];
if(min>dj[i])
{
min = dj[i];
k = i;
}
}
cur = k;
if(cur == end)break;
if(min == MAX)break;
}
printf("%d\n",dj[end]<MAX?dj[end]:-);
} int main()
{
while(scanf("%d%d",&n,&m)!= EOF)
{
memset(vis,,sizeof(vis));
for (i = ; i < n; i++)
for (j = ; j < n; j++)
{
map[i][j] = (i==j?:MAX);
}
for (i = ; i <= m; i++)
{
scanf("%d%d%d",&x,&y,&len);
map[x][y] = map[y][x] = (map[x][y]<len?map[x][y]:len);
}
scanf("%d%d",&x,&y);
DJ(x,y);
}
return ;
}
/************************************************************************/
/*
hdu 畅通工程续
floyd 求起始点到目标点最短距离
题目大意:求这些村子中从起始位置到目标点的最短距离
解题思路:floyd 算法,求图中两个点的最短距离
floyd算法就是在整个图中扫描,看点 i 到 j 的距离和
(点 i 到点 k 的距离)+(点 k 到点 j 的距离)两者哪个较小,
把小的存入map[i][j]中即可。
*/
/************************************************************************/ #include <stdio.h>
#include <string.h>
#include <algorithm> #define MIN(a,b) a<b?a:b
#define MAX 0xfffffff
const int N = ; int map[N][N];
int n,m,x,y,len,i,j; void floyd(int start,int end)
{
int k;
for (k = ; k < n; k++)
{
for (i = ; i < n; i++)
for (j = ; j < n; j++)
map[i][j] = MIN(map[i][j],map[i][k]+map[k][j]);
}
printf("%d\n",map[start][end]<MAX?map[start][end]:-);
} int main()
{
while(scanf("%d%d",&n,&m)!= EOF)
{
for (i = ; i < n; i++)
for (j = ; j < n; j++)
{
map[i][j] = (i==j?:MAX);
}
for (i = ; i <= m; i++)
{
scanf("%d%d%d",&x,&y,&len);
map[x][y] = map[y][x] = (map[x][y]<len?map[x][y]:len);
}
scanf("%d%d",&x,&y);
floyd(x,y);
}
return ;
}
hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)的更多相关文章
- HDU 1874 畅通工程续(初涉dijkstra算法实现)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 dijkstra算法实现可参照此博客学习:http://www.cnblogs.com/biye ...
- hdu 1874 畅通工程续(模板题 spfa floyd)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 spfa 模板 #include<iostream> #include<stdio ...
- HDU 1874 畅通工程续(模板题——Floyd算法)
题目: 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰 ...
- ACM: HDU 1874 畅通工程续-Dijkstra算法
HDU 1874 畅通工程续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Desc ...
- HDU 1874 畅通工程续-- Dijkstra算法详解 单源点最短路问题
参考 此题Dijkstra算法,一次AC.这个算法时间复杂度O(n2)附上该算法的演示图(来自维基百科): 附上: 迪科斯彻算法分解(优酷) problem link -> HDU 1874 ...
- hdu 1874 畅通工程续
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过 ...
- HDU 1874畅通工程续(迪杰斯特拉算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Time Limit: 3000/1000 MS (Java/Others) ...
- hdu 1874 畅通工程续 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 题目分析:输入起点和终点,顶点的个数,已连通的边. 输出起点到终点的最短路径,若不存在,输出-1 ...
- HDU 1874 畅通工程续(最短路/spfa Dijkstra 邻接矩阵+邻接表)
题目链接: 传送门 畅通工程续 Time Limit: 1000MS Memory Limit: 65536K Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路. ...
随机推荐
- Linux系统Ubuntu安装zookeeper
1. 下载zookeeper二进制安装包 下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz ...
- 使用maven命令安装jar包到本地仓库
第三方jar包在开发工具中引入后编译没问题, 启动调试包括打包时会提示找不到jar包的错误.需要上传到maven仓库中,并在pom文件内引入. maven命令: 安装指定文件到本地仓库命令:mvn i ...
- win32 socket之select
之前光看理论是不行滴,一定要实践,实践啊,不然永远都是门外汉!! 嗯嗯,把找到的一段源码贴上先,稍微修改了一下: #include <winsock.h> #include <std ...
- placement new 笔记
之前看到 偶尔用placement new 的用法,当分配内存频繁,而且对效率要求很高的情况下,可以先申请一块大内存,然后在此内存上构建对象,关键是可以自动调用其构造函数,否则要悲剧. 但是之后要自己 ...
- Octave及其工具包的安装
Octave的安装: http://blog.sina.com.cn/s/blog_1358485f70102wmpa.html http://www.gnu.org/software/octave/ ...
- 树莓派进阶之路 (003) - Raspberry Pi(树莓派)国内软件源
树莓派自带的软件源是 deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi 由于网站在国外 ...
- 树莓派进阶之路 (007) - 树莓派安装cmake3.5 脚本(原创)
cmake3.5安装脚本: #!/bin/bash cd echo "安装make" sudo apt-get install make echo "安装cmake&qu ...
- 【算法】MD5加密
1.什么是MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍 ...
- 【javascript】escape()、encodeURI()、encodeURIComponent()区别详解
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...
- 【Servlet】web.xml中welcome-file-list的作用
今天尝试使用struts2+ urlrewrite+sitemesh部署项目,结果发现welcome-file-list中定义的欢迎页不起作用: <welcome-file-list> & ...