虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,0),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训练啊,所以草儿决定在要在最短的时间去一个自己想去的地方!因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车(好可怜啊~)。
Input
输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个;
接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=<(a,b)<=1000;a,b 之间可能有多条路)
接着的第T+1行有S个数,表示和草儿家相连的城市;
接着的第T+2行有D个数,表示草儿想去地方。
Output
输出草儿能去某个喜欢的城市的最短时间。
Sample Input
6 2 3
1 3 5
1 4 7
2 8 12
3 8 4
4 9 12
9 10 2
1 2
8 9 10
Sample Output
9

很典型的最短路问题,几个细节的地方需要注意,第一个是起点到周围的距离是没有给出的,设起点是0点,需要用倒数第二行的数据来确定0到周围点的距离,设置这的距离为1,输出时再减去1即可,第二是目的地有很多,选取里面最小的那个输出,只需要比较一下这几个点的dist值即可,其余都是很普通的迪杰斯特拉算法。另外题目没有给数据范围和多组输入,修改一下就好。

AC代码

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int T,S,D,N;
int INF=9999999;
int Map[1005][1005];
int St[1005];
int En[1005];
int dist[1005];
int vis[1005];
int FindMinDist()
{int min,mindist=INF;for(int i=1;i<=N;i++)if(mindist>dist[i]&&vis[i]==0){mindist=dist[i];min=i;}if(mindist<INF)return min;elsereturn -1;
}
void Dijkstra()
{for(int i=0;i<=N;i++)dist[i]=Map[0][i];vis[0]=1;while(1){int temp=FindMinDist();if(temp==-1)break;vis[temp]=1;for(int i=1;i<=N;i++)if(dist[i]>dist[temp]+Map[temp][i])dist[i]=dist[temp]+Map[temp][i];}
}
int main()
{while(cin>>T>>S>>D){N=0;    memset(vis,0,sizeof(vis));memset(dist,0,sizeof(dist));for(int i=0;i<1005;i++)for(int j=0;j<1005;j++)if(i==j) Map[i][j]=0;else Map[i][j]=INF;for(int i=0;i<T;i++){int a,b,c;cin>>a>>b>>c;N=max(max(N,a),b);Map[a][b]=min(c,Map[a][b]);Map[b][a]=Map[a][b];}for(int i=0;i<S;i++){int temp;cin>>temp;Map[temp][0]=1;Map[0][temp]=1;}for(int i=0;i<D;i++)cin>>En[i];Dijkstra();int Min=INF;for(int i=0;i<D;i++)if(Min>dist[En[i]])Min=dist[En[i]];cout<<Min-1<<endl;}return 0;
}

一个人的旅行 图论最短路问题相关推荐

  1. 数学建模学习笔记(七)——图论最短路问题

    文章目录 一.综述 二.图论最短路问题 三.几个简单的作图方法 四.Dijkstra(迪杰斯特拉)算法 五.Bellman-Ford算法 六.总结 一.综述 本文主要根据图论的基本概念,介绍图论中常见 ...

  2. Matlab 图论最短路问题模型代码

    最短路问题的基本内容 最短路问题研究的是,在一个点与点之间连接形成的网络图中,对应路径赋予一定的权重(可以理解为两点之间的距离),计算任意两点之间如何和走,路径最短的问题.在这里的距离可以理解成各种两 ...

  3. Silver Cow Party 图论 最短路问题

    One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1-N is going to attend the big cow ...

  4. C++图论 最短路问题总结

    目录 最短路问题 图的存储 一.单源最短路 ① 朴素Dijkstra O(n^2) 练习题 代码 ② 堆优化Dijkstra O(mlogn) 练习题 代码 ③ Bellman_ford O(nm) ...

  5. 【图论】C_算竞_升降梯上(二维抽象一维)

    一.题目描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄. Nescafé 之塔一共 ...

  6. 【美赛学习记录】模型

    美赛学习记录-2022年2月7日 代码! 线性回归 数据拟合 插值 最优化求极值 插值 ARIMA 复杂网络实验 模型验证 K-Fold Cross-validation k折交叉验证 [基础模型] ...

  7. 图论之最短路问题题目集

    注意事项 1.最短路问题的难点不在于算法,而在于建图方式 2.需要挖掘题目中隐藏的条件单.双向图,是否存在负环,是否有重边等等 3.往往不只简单图论还会和其他知识点一起出 第一部分----模板 一.单 ...

  8. 离散数学图论旅行规划问题_《图论及其应用》(一)

    点击返回目录 一. 定义 1.1 图的基本概念 图或有序对或序偶(P1).有限图/平凡图/非平凡图/空图(P1).顶点数或阶数/边数/重数/重边/环(P1).简单图/复合图(P1).相邻(P2).相关 ...

  9. 数学建模之图论——图与网络模型(一)(基本概念和最短路问题,附MATLAB源码)

    图与网络的基本概念与数据结构 一.图与网络的基本概念 图论中图是由点和边构成的,可以反映一些对象之间的关系. 无向图 无向图(简称图):没有方向,由点和边构成的图,记做G =(V , E),点是V,边 ...

最新文章

  1. linux工具之检测内存泄漏-valgrind
  2. python编辑用户登录界面_python编辑用户登入界面的实现代码
  3. NET问答:Select 和 SelectMany 的区别
  4. Cisco无线mDNS
  5. ei eo eq什么意思_音响中的EQ是什么意思呀?
  6. 服务计算与服务生态系统 第一章测验题答案
  7. Mysql漏洞修复方法思路及注意事项
  8. maven指定JDK
  9. (1)快速了解Redis
  10. java dht 爬虫_P2P中DHT网络爬虫
  11. PageAdmin网站建设教程:仿58同城站群实现不同地区Ip跳转不同分站
  12. mysql 一周签到表_最实用的考勤签到表(上下班签到表);
  13. 数电——高/低电平之间的差异与共同
  14. 数组——洛谷#P1567 统计天数(Python实现)
  15. LQ0116 方格计数【数学计算】
  16. Python 深度学习目标检测结果可视化
  17. python解释器种类及特点_【Python面试】 说说Python解释器种类以及特点?
  18. 中国式社交网络就一个“约”字而已
  19. taro tabBar的设置,设置tabbar的文字,设置tabbar的图标
  20. 使用 xrdp 远程登录ubuntu出现黑屏或者花屏

热门文章

  1. Jquery垂直下拉二级菜单
  2. 1392. Dreaming of Stars
  3. 使用WebService进行异步通信
  4. 正襟危坐说--操作系统(肆):线程
  5. iptables说明(转)
  6. Java关键字(三)——static
  7. Codeforces Round #460 (Div. 2)
  8. Day19:继承实现的原理、子类中调用父类的方法、封装
  9. 5.26 考试修改+总结
  10. iOS开发--基于AFNetWorking3.0的图片缓存分析