思路:枚举所有起点城市然后比较每个起点所去喜欢城市的最小距离

  1. #include<cstdio>
  2. #include<cmath>
  3. #include<cstring>
  4. const int qq=+;
  5. const int MAX=1e7;
  6. int s[qq],e[qq];
  7. int dist[qq];
  8. int vis[qq],tar[qq];
  9. int city[qq][qq];
  10. int t,a,b;
  11. void Dijkstra()
  12. {
  13. int poor=MAX;
  14. for(int l=;l<=a;++l){
  15. int tot=MAX;
  16. for(int i=;i<qq;++i){
  17. vis[i]=;
  18. dist[i]=city[s[l]][i];
  19. }
  20. vis[s[l]]=;
  21. for(int i=;i<qq;++i){
  22. int minx=MAX;
  23. int u=s[l];
  24. for(int j=;j<qq;++j)
  25. if(!vis[j] && dist[j] < minx)
  26. minx=dist[u=j];
  27. if(minx==MAX) break;
  28. vis[u]=;
  29. if(tar[u]!=){
  30. tot=dist[u];
  31. break;
  32. }
  33. for(int j=;j<qq;++j)
  34. if(!vis[j] && city[u][j] < MAX)
  35. if(dist[u]+city[u][j]<dist[j])
  36. dist[j] = dist[u] + city[u][j];
  37. }
  38. if(tot<poor)
  39. poor=tot;
  40. }
  41. printf("%d\n",poor);
  42. }
  43. int main()
  44. {
  45. while(scanf("%d %d %d",&t,&a,&b)!=EOF){
  46. for(int j,i=;i<qq;++i)
  47. for(j=;j<qq;++j)
  48. city[i][j]=MAX;
  49. for(int i=;i<=t;++i){
  50. int x,y,cost;
  51. scanf("%d %d %d",&x,&y,&cost);
  52. if(cost<city[x][y])
  53. city[x][y]=city[y][x]=cost;
  54. }
  55. for(int i=;i<=a;++i)
  56. scanf("%d",&s[i]);
  57. memset(tar,,sizeof(tar));
  58. for(int i=;i<=b;++i){
  59. int ans;scanf("%d",&ans);
  60. tar[ans]=;
  61. }
  62. Dijkstra();
  63. }
  64. }

HDU 2066最短路径Dijkstra、的更多相关文章

  1. hdu 3790 最短路径dijkstra(多重权值)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  2. ACM: HDU 3790 最短路径问题-Dijkstra算法

    HDU 3790 最短路径问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Des ...

  3. HDU - 3790 最短路径问题 (dijkstra算法)

    HDU - 3790 最短路径问题 Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费 ...

  4. # H - H HDU - 2066 (多起点、多终点问题)

    H - H HDU - 2066 (多源点.多汇点问题) 一个图上,有M条边,Z个出发点,Y个终止点.求一条最短路,其中起点是Z中的任意一点,终点是Y中任意一点. Input 输入数据有多组,输入直到 ...

  5. 最短路径 dijkstra

    最短路径 dijkstra #include <stdio.h> #include <string.h> #include <limits.h> #define M ...

  6. 网络最短路径Dijkstra算法

    最近在学习算法,看到有人写过的这样一个算法,我决定摘抄过来作为我的学习笔记: <span style="font-size:18px;">/* * File: shor ...

  7. c/c++ 图的最短路径 Dijkstra(迪杰斯特拉)算法

    c/c++ 图的最短路径 Dijkstra(迪杰斯特拉)算法 图的最短路径的概念: 一位旅客要从城市A到城市B,他希望选择一条途中中转次数最少的路线.假设途中每一站都需要换车,则这个问题反映到图上就是 ...

  8. 单源最短路径Dijkstra算法,多源最短路径Floyd算法

    1.单源最短路径 (1)无权图的单源最短路径 /*无权单源最短路径*/ void UnWeighted(LGraph Graph, Vertex S) { std::queue<Vertex&g ...

  9. 最短路径——Dijkstra算法和Floyd算法

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

随机推荐

  1. python 爬取段子网段子写入文件

    import requests import re 进入网址 for i in range(1,5): page_url = requests.get(f"http://duanziwang ...

  2. 技巧专题3(cdq分治、整体二分等)

    cdq分治与整体二分 cdq来源于2008年国家集训队作业陈丹琦(雅礼巨佬),用一个log的代价完成从静态到动态(很多时候是减少时间那一维的). 对于一个时间段[L, R],我们取mid = (L + ...

  3. P1127

    题目描述 如果单词X的末字母与单词Y的首字母相同,则X与Y可以相连成X.Y.(注意:X.Y之间是英文的句号“.”).例如,单词dog与单词gopher,则dog与gopher可以相连成dog.goph ...

  4. 一个基于Asterisk构建的VOIP应用软件:Elastix介绍

    Elastix 是一种应用软件,它整合了适用于那些基于 Asterisk 的 PBX 的最好工具,并将它们集成为单一的.易用的接口.同时,它增加了自己的工具集,以及允许创建第三方模块来使 Elasti ...

  5. pl/sql基础知识—函数快速入门

    n  函数 函数用于返回特定的数据,当建立函数式,在函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据,我们可以使用create function来建立函数,实际案例: ...

  6. 跟我一起认识axure(三)

    交互设置,添加链接 点击预览

  7. RDS 5.7三节点企业版时代的数据一致性解决方案

    上篇我们看到了在MySQL主备模式下,我们在数据一致性上做了不少事情,但解决方案都有一定的局限性,适合部分场景或者解决不彻底的问题.随着以Google Spanner以及Amazon Aruora 为 ...

  8. 网络流24题 餐巾计划(DCOJ8008)

    题目描述 一个餐厅在相继的 n nn 天里,每天需用的餐巾数不尽相同.假设第 i ii 天需要 ri r_ir​i​​ 块餐巾.餐厅可以购买新的餐巾,每块餐巾的费用为 P PP 分:或者把旧餐巾送到快 ...

  9. html5实现下拉加载

    介绍: 实现手机下拉自动加载数据. 原理: 通过检测页面内容距离加上当前滚动的距离大于或等于滚动距离总长时,调用ajax数据加载 事例: var myMoreInfo = new iMoreInfo( ...

  10. CSS兼容性(IE和Firefox)技巧大全

    CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下.对于web2.0的过度,请尽量用xhtml格 ...