hdu2066:http://acm.hdu.edu.cn/showproblem.php?pid=2066

这道题其实一次Dijkstra就可以了,我们将草儿的家看做0,从草儿家到相邻镇的花费看做0,那么我们就只需要求草儿家到各个目的地的最短路即可,一次Dijkstra便可解决

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int inf = 1<<30;
 
int T,S,D,n;
int map[1111][1111];
int vis[1111],cast[1111];
int s[1111],e[1111];
 
void Dijkstra()
{
    int i,j,minn,pos;
    memset(vis,0,sizeof(vis));
    vis[0] = 1;
    for(i = 0; i<=n; i++)
        cast[i] = map[0][i];
    for(i = 1; i<=n; i++)
    {
        minn = inf;
        for(j = 1; j<=n; j++)
        {
            if(cast[j]<minn && !vis[j])
            {
                pos = j;
                minn = cast[j];
            }
        }
        vis[pos] = 1;
        for(j = 1; j<=n; j++)
        {
            if(cast[pos]+map[pos][j]<cast[j] && !vis[j])
                cast[j] = cast[pos]+map[pos][j];
        }
    }
}
 
int main()
{
    int i,j,x,y,z,start,end;
    while(~scanf("%d%d%d",&T,&S,&D))
    {
        n = 0;
        for(i = 0; i<1111; i++)
        {
            for(j = 0; j<1111; j++)
                map[i][j] = inf;
            map[i][i] = 0;
        }
        while(T--)
        {
            scanf("%d%d%d",&x,&y,&z);
            n = max(max(n,x),y);
            if(z<map[x][y])
                map[x][y] = map[y][x] = z;
        }
        int minn = inf;
        for(i = 0; i<S; i++)
        {
            scanf("%d",&s[i]);
            map[0][s[i]] = map[s[i]][0] = 0;
        }
        for(i = 0; i<D; i++)
            scanf("%d",&e[i]);
        Dijkstra();
        for(i = 0; i<D; i++)
            minn = min(minn,cast[e[i]]);
        printf("%d\n",minn);
    }
 
    return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/libin56842/article/details/16919583

HDU2066---------Dijkstra算法代码相关推荐

  1. dijkstra算法代码_数据科学家需要知道的5种图算法(附代码)

    在本文中,我将讨论一些你应该知道的最重要的图算法,以及如何使用Python实现它们. 作者:AI公园 导读 因为图分析是数据科学家的未来. 作为数据科学家,我们对pandas.SQL或任何其他关系数据 ...

  2. dijkstra算法代码_深度好文:改变了我们生活方式最有影响力的5种图算法

    作者:Rahul Agarwal编译:刘静图灵联邦编辑部出品本文作者Rahul Agarwal是一位数据科学家,近期,他在Medium上分享了常用的5种图算法的介绍和代码实现.以下是具体博文内容:作为 ...

  3. java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...

    最近在复习java,下学期要用,写这个练手.  技术较粗糙,见谅. 代码里用的是这幅地图,根据实际情况更改,在addNode方法中 这个是运行结果,起点和终点在 运行wrap(String qidia ...

  4. 03 最短路 dijkstra算法spfa算法floyd算法(附带实例代码) 图论-1

    文章目录 最短路 邻接表的图如下 邻接矩阵如下图 链表实现邻接表实现代码 单源最短路径 Dijkstra 算法 朴素版本 Dijkstra 实现代码 堆优化的dijkstra算法代码实现 Bellma ...

  5. 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)

    Dijkstra算法是用来求解从某个源点到其他各顶点的最短路径(单源最短路径). 下面的Dijkstra算法的讲解都是基于这个有向图,在遇到其他问题可以类比. 算法的基本思想: 把图中的定点分成两组, ...

  6. dijkstra算法matlab程序_Dijkstra算法例子

    在Dijkstra算法代码下载本文涉及到的代码. 程序代码 Dijkstra算法的程序如下: function [d, p] = dijkstra(adj, s, t) % 使用dijkstra求最短 ...

  7. **Dijkstra算法**

    1.什么是Dijkstra算法 杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短 ...

  8. Dijkstra算法求解单源最短路径问题

    文章目录 一 前言 二 Dijkstra 算法讲解 1. 贪心算法的证明 2. 算法实现说明 3. 初版Dijkstra算法代码 三 时间复杂度优化 1. 优化策略 2. 优化后的代码 四 结语 一 ...

  9. 单源最短路径dijkstra算法

    介绍 dijkstra算法也是解决单源最短路径问题的一种方法.它要求图中路径都是非负的.而且,它的效率要高于bellman算法. 实现 首先定义图的结点信息和边信息. struct _Node;typ ...

  10. 最短路问题之单源最短路-Dijkstra算法

    一个点(源点)到其余各个顶点的最短路径,叫做单源最短路经. 例如求下图中的1号顶点到2,3,4,5,6号顶点的最短路径. 使用二维数组e来存储顶点之间边的关系,初始值如下表. e 1 2 3 4 5 ...

最新文章

  1. 快卷疯了!被面试官说我是今天第5个背八股文的。。。
  2. RocketMQ之Pull消费者客户端启动
  3. 每天天一个linux命令echo,每天一个linux命令-echo(示例代码)
  4. MOSSE目标跟踪算法的理解
  5. [Redux/Mobx] Redux怎么添加新的中间件?
  6. Spring Boot 热部署 devtools模块
  7. ubuntu安装python3、setuptools、ipython
  8. PostgreSQL 的 target_list分析(一)
  9. java数组为什么可以迭代吗_另一个“只能迭代数组或java.lang.Iterable实例”的问题...
  10. 10项技能让前端开发者价值百万!
  11. 201612-2工资计算
  12. tf.image.resize_images
  13. vmware的xp虚拟机更改虚拟硬盘序列号
  14. java 如何调用类库_Java中怎么调用类库?
  15. D1: elevater design
  16. 最好的输入法--陈桥五笔5.806(绿色可自动卸载版)
  17. python编译原理 书籍_如何想学点编译原理,又不想直接看龙虎之类的书籍,太多理论,干燥?...
  18. uniapp小程序自定义分享按钮
  19. 怎么制作打印机服务器,如何配置打印机服务器设置
  20. python自制简易二维码代码_用python把自己的二维码制作成动态码,一行代码即可搞定!敲简单!...

热门文章

  1. 解决hadoop:未找到命令;hadoop:未找到命令问题
  2. c++ vector 一部分_要去|原创TheShy要去SKT、小C会给阿水打辅助!各大战队面临重新洗牌...
  3. 玩转 Windows 10 中的 Linux 子系统
  4. pathon包傻瓜升级
  5. NI LabVIEW开发环境(2.生成installer安装程序exe)
  6. 计算机内存条多大容量,电脑内存条到底怎么选?选多大容量最合适?
  7. Unity 3d 摄像头
  8. 服务器w8系统如何重装,华硕w8系统重装图文教程
  9. 小学计算机社团活动安排,小学计算机社团活动计划
  10. java web工程中如何添加图片_java web中如何添加图片