这是一道多源点的dijkstra模板题,我整整做了一上午,交了14遍,过了4遍(呵呵,很疯狂啊!)

总的来说,收获颇丰。应该算完全掌握了这种算法。这是第一次过的代码,用的超级笨的方法,对每个起点和终点分别调用dij算法。

放在low[i][j] (代表第i个点到第j个点的最短距离) 中,最后再从low[i][j]找出最短的路径输出。    890ms过的。呵呵,很强,几乎没有比我更慢的啦!嘿嘿(不好意思) ,代码也很长。

AC:

#include<stdio.h>
#include<string.h>
#define inf 100000000

int map[1051][1051];
int s[1051];
int d[1051];

int from[1051];         //有s 个起点
int want[1051];         //有d 个终点

int low[1051][1051];     //low[i][j]  表示第i个点到第j 个点的最短路径

int dij(int v,int e)      //起点v,终点e
{
    int i,j,min,pos;
    for(i=1;i<=1050;i++)
    {
        s[i]=0;
        d[i]=map[v][i];
    }
    s[v]=1;
    d[v]=0;
    for(i=1;i<1050;i++)
    {
        min=inf;
        for(j=1;j<=1050;j++)
        {
            if(!s[j]&&min>d[j])
            {
                pos=j;
                min=d[j];
            }
        }
        s[pos]=1;
       
        if(pos==e||min==inf) break;        //不要怀疑自己 ,这里没有错误! 我的思想是正确的
       
        for(j=1;j<=1050;j++)
        {
            if(!s[j]&&d[j]>(d[pos]+map[pos][j]))
            d[j]=d[pos]+map[pos][j];
        }
    }
    return d[e];
}       
int main()
{
    int t,s,d;
    int i,j,k;
    int a,b,time;
    while(scanf("%d%d%d",&t,&s,&d)!=EOF)
    {
        for(i=1;i<=1050;i++)
        {
            for(j=1;j<=1050;j++)
            {
                map[i][j]=inf;
                low[i][j]=inf;
            }
        }
       
        //memset(map,100000000,sizeof(map));
        //memset(low,100000000,sizeof(low));
       
        for(i=1;i<=t;i++)
        {
            scanf("%d%d%d",&a,&b,&time);
            {
    if(map[a][b]>time)                   //这点很操蛋,没读清题意,WA了n多次!
    map[a][b]=map[b][a]=time;            //两个点之间可以有多条路,每次找最短边,输入地图中
   }
        }
        for(i=1;i<=s;i++)
        scanf("%d",&from[i]);
        for(i=1;i<=d;i++)
        scanf("%d",&want[i]);
       
        for(i=1;i<=s;i++)
        {
            for(j=1;j<=d;j++)                       //我的方法很笨,对每个点调用dij,所以就很耗时间
            {                                        //说明对dij算法 还不是很清楚。
                                            //事实上,对每个起点调用dij算法,就得到了所有结果了
                low[i][j]=dij(from[i],want[j]);
            }
        }
        k=inf;
        for(i=1;i<=s;i++)       
        {
            for(j=1;j<=d;j++)
            {
                if(k>low[i][j])
                k=low[i][j];
            }
        }
        printf("%d\n",k);
    }
    return 0;
}

转载于:https://www.cnblogs.com/zhangyabin---acm/archive/2012/03/20/2407930.html

hdu2066----------dijkstra模板题相关推荐

  1. HDU 2544最短路dijkstra模板题

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

  2. Dijkstra模板题——单源最短路径(洛谷 P3371)

    题目选自洛谷P3371 这个数据类型可以将两个数据进行打包,比如 pair<int,int> 就是将两个int型进行打包. 而且使用优先队列时,优先队列会根据你打包的第一个数据进行排序. ...

  3. 城市平乱 (dijkstra模板题)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=115 本题求单源最短路,这里有个技巧,因为源点不一,这时我们可以设置一个"超级源 ...

  4. POJ 1511 Invitation Cards(最短路径,dijkstra 模板题)

    题目意思: 在有向图中,求1到所有点的最短路之和 + 所有点到1的最短路之和. 本题要点: 1.先求1点 到其他点的单源最短路径 d[i](1 <= i <= n), 用 dijkstra ...

  5. POJ-2387:Dijkstra模板题

    题目链接 AC代码: #include <stdio.h> #include <string.h> #include <string> #include <i ...

  6. 【dijkstra模板】旅游规划 (25 分)

    立志用最少的代码做最高效的表达 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...

  7. ~~朴素dijkstra算法 (搜索与图论)(附模板题AcWing 849. Dijkstra求最短路 I)

    模板 时间复杂是 O(n2+m), n表示点数,m 表示边数 int g[N][N]; // 存储每条边 int dist[N]; // 存储1号点到每个点的最短距离 bool st[N]; // 存 ...

  8. P1339 热浪 最短路径模板题

    这么naive的题面一看就是最短路模板题~~~ ok.首先是floyd算法,tts,记得把k放在最外面就行了. 1 #include <cstdio> 2 #include <cst ...

  9. 一起开心2020暑假训练第二周 图论(模板题)

    比赛链接: 文章目录 A HDU 1285 一 B HDU 1863 起 C POJ 2387 开 D POJ 1502 心 E HDU 5922 图 F HDU 2112 论 A HDU 1285 ...

最新文章

  1. 比起睡觉,我更喜欢刷巨详细的Java枚举类,这是来自猿人的自觉呀
  2. MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
  3. cxf和spring结合出现问题
  4. iec104点号_IEC104报文流程(有常用类型标识解释)
  5. 前端学习(2648):vue3.0的处理展示
  6. (干货分享)农商行中商业智能建设的整体思路与架构
  7. python创建一个字典、其中值为1_从2个列表创建一个字典,其中一个作为键,另一个作为python中的值...
  8. 公共计算机房电气设计规范,《住宅建筑电气设计规范》(总结版)
  9. 高中计算机课程网页修改,高中信息技术教学贯彻新课改理念
  10. 实时错误‘429’:ActiveX控件不能创建对象
  11. Eclipse 下载带有WTP 相应插件板本的地址
  12. 云集宣布品牌升级,推出全新slogan“购物享受批发价”
  13. label mpchart 饼图_ECharts饼图属性设置
  14. Linux系统用gcc编写C语言程序
  15. Flume笔记二:案例
  16. README.generic-sessions.md
  17. php安装protocol buffer 扩展,thinkphp引入protocol buffer
  18. 【链想会】第八期 分布式商业管理的内在逻辑和价值思考
  19. 将SkeyeVSS综合安防监控视频流媒体云平台监控画面嵌入微信公众号进行直播
  20. 平板电脑取代PC是大势所趋?

热门文章

  1. URAL 1233 Amusing Numbers 好题
  2. pearson, kendall 和spearman三种相关分析方法的区别
  3. 【编译】StreamInsight应用调优入门(一)——概述
  4. VBS脚本压缩IIS日志
  5. Web 2.0 编程思想:16条法则(转)
  6. python父类方法的装饰器_Python使用装饰器自动调用父类__init__
  7. html 中avi视频插件,JDG让一追二击败V5!Kanavi降维打击,逆版本选英雄不按常理出牌...
  8. mongodb java 开源_开源的Mongodb java client -- mango发布
  9. sql 树状结构中知道 父节点与孙节点_数据结构之(树)
  10. 【Linux】Linux内核的整体架构简介