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 某省自从实行了很多年的畅通工程计划后,终于修建了很多路. ...
随机推荐
- 主成分分析PCA
PCA(Principal Component Analysis)不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式. PCA把原先的n个特征用数目更少的m个特征取代,新特征 ...
- Openwrt中用iftop查看网络流量情况
iftop可以查看指定网卡上的流量情况, 命令说明 iftop: display bandwidth usage on an interface by host Synopsis: iftop -h ...
- jsp+easyui+DataGrid 例子
转自:https://blog.csdn.net/l3922768721/article/details/51597977 导入js和css <%@ page language="ja ...
- 【RS】Using graded implicit feedback for bayesian personalized ranking - 使用分级隐式反馈来进行贝叶斯个性化排序
[论文标题]Using graded implicit feedback for bayesian personalized ranking (RecSys '14 recsys.ACM ) [论文 ...
- linux shell 脚本攻略学习10--生成任意大小的文件和文本文件的交集与差集详解
一.生成任意大小的文件(dd命令): 举例: amosli@amosli-pc:~/learn/example$ ; + records in + records out bytes ( MB/s a ...
- IT编年史 技术生命周期起步,成长,成熟和衰退四个阶段 IT历史总结
IT编年史 最近查看了大量的正史或者野史,体会了整个IT夜发展的风气云涌,颇为激动,撰写如下. 感谢google黑板报的浪潮之巅http://googlechinablog.com/2007/07/a ...
- CentOS 开启防火墙 firewall ,mysql 远程访问
最近在阿里云服务器centos上安装了mysql数据库,默认是不开启远端访问功能,需要设置一下防火墙,在开放默认端口号 3306时提示FirewallD is not running,经过排查发现是防 ...
- sql 2005出现错误:数据库 'Twitter' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。
--先备份数据库 --截断事务日志 backup log Twitter with no_loggo --收缩数据库 dbcc shrinkdatabase(Twitter) go O ...
- 【java】详解集合
目录结构: contents structure [-] 集合概述 什么是集合 Collection和Map的区别 List和Set的区别 ArrayList和LinkedList的区别 HashSe ...
- Activity的onPause()、onStop()和onDestroy()里要做的事情
onPause(): 当系统调用你的activity中的onPause(),从技术上讲,那意味着你的activity仍然处于部分可见的状态,当时大多数时候,那意味着用户正在离开这个activity并马 ...