杭电problem2066


Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)

Total Submission(s) : 27   Accepted Submission(s) : 6

Font: Times New Roman | Verdana | Georgia


Problem Description


虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^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

 1 #include<iostream>
#include<cstring>
//#include<fstream>
using namespace std;
int T,S,D;
int arr[][];
bool judge[];
int d[]; void Dijkstra(int star,int endf)//此处就是我上篇写的模板,只是改动了参数变量以及那因题而异的“最小值”
{
for(int f=;f<=endf;f++)
d[f]=arr[star][f];
memset(judge,false,sizeof(judge));
judge[star]=true;
d[star]=;
for(int i=;i<=endf;i++)
{
int min=,g=;
for(int k=;k<=endf;k++)
if(!judge[k]&&d[k]<min)
{
min=d[k];
g=k;
}
judge[g]=true;
for(int j=;j<=endf;j++)
if((d[g]+arr[g][j]<d[j]))
d[j]=d[g]+arr[g][j]; }
}
int main()
{ // freopen("in.txt","r",stdin);
int a,b,time,c;
while(cin>>T>>S>>D)
{ int ma=;
memset(arr,,sizeof(arr));
for(c=;c<T;c++)
{
cin>>a>>b>>time;
if(time<arr[a][b])
arr[a][b]=arr[b][a]=time;
if(a>ma) ma=a;//很牛的是这里,当然了也是看到大牛的杰作,这次会了,下次也就成大牛了
if(b>ma) ma=b;//ma就是用来求出顶点编号最大的
}
ma++;//最大的加一以后是什么结果呢
//就是相当于把草儿想去的地方归结到一个顶点,这样做的话,对于应用Dijstra是有很大的益处的
for(c=;c<S;c++) {cin>>a;arr[][a]=;}
for(c=;c<D;c++) {cin>>a;arr[a][ma]=;}//那就是这句了
Dijkstra(,ma);
cout<<d[ma]<<endl;
}
return ;
} 思路很清晰吧!
再啰嗦一下思路:
1:首先按题目条件读入数据,并作适当处理,个人认为Dijstra算法如何应用取决与开始对数据的处理以及它内部的一些微小改变
(就如此题在开始的时候对数据进行预处理就大大简化了后面的操作)
2:直接用Dijstra算法模板,只不过那个参数要稍微改变一下
3:最大值一定要选取恰当,小的话就会wronganswer,大的话就有可能超时 好了就这么多了,保证我过一个月后能看懂就可以啦

Dijstra算法-------为了纪念,等以后看的时候方便的更多相关文章

  1. dijstra算法,求源点到各个顶点的最短距离

    1:dijstra算法常用语求最短距离, dijstra每次从未发现节点n[]中,发现距离源点最短的节点m,求出最短节点后,将m添加到已发现节点y[]中,用该节点m进行更新其它未发现节点n[]-m的最 ...

  2. 单源最短路Dijstra算法

    Dijstra算法是寻找从某一顶点i出发到大其他顶点的最短路径.Distra算法的思想与Prim算法很像,它收录顶点的规则是按照路径长度递增的顺序收录的.设v0是源顶点,我们要寻找从v0出发到其他任意 ...

  3. KMP算法最浅显理解——一看就明确

    说明 KMP算法看懂了认为特别简单,思路非常easy,看不懂之前.查各种资料,看的稀里糊涂.即使网上最简单的解释,依旧看的稀里糊涂. 我花了半天时间,争取用最短的篇幅大致搞明确这玩意究竟是啥. 这里不 ...

  4. JS中几种常见的数组算法(前端面试必看)

    JS中几种常见的数组算法 1.将稀疏数组变成不稀疏数组 /** * 稀疏数组 变为 不稀疏数组 * @params array arr 稀疏数组 * @return array 不稀疏的数组 */ f ...

  5. 最短路,dijstra算法

    #include<iostream> #include<stdio.h> #include<math.h> #include<vector> using ...

  6. Dijstra算法求最短路径

    参考博客:http://blog.51cto.com/ahalei/1387799        与Floyd-Warshall算法一样这里仍然使用二维数组e来存储顶点之间边的关系,初始值如下.   ...

  7. 硬盘上的一些算法小题目||and今天看了下林锐的书以及gdb调试 及一些变成算法小题目

    gdb调试:观察点,断点,事件捕捉点.step 进入函数,next 跳过函数,until 跳出循环,finish 结束函数 林锐:书后试题 & c++的对象模型图 看了二叉树的非递归遍历, 链 ...

  8. 最短路和次短路的条数(dijstra算法或spfa算法)POJ3463

    http://poj.org/problem?id=3463 Sightseeing Time Limit: 2000MS   Memory Limit: 65536K Total Submissio ...

  9. sqrt开平方算法的尝试,是的看了卡马克大叔的代码,我来试试用C#写个0x5f3759df和0x5f375a86跟System.Math.Sqrt到底哪个更强

    今天笔试遇到一个代码题,要求写一个开平方算法,回来发现了雷神之锤里的一段神代码: float Q_rsqrt( float number ) { long i; float x2, y; const ...

随机推荐

  1. 新机器连接老机器遇到的ERROR

    Ansible无法连接老旧机器 报错内容: [root@BI ansible]# ansible -i /etc/ansible/hosts GameServer -m ping 10.10.113. ...

  2. python3 安装 past 包

    python3 安装 past 包 $ pip install future 错误现象 缺乏包的引用 from past.types import unicode 参考链接 https://pypi. ...

  3. Maven入门----介绍及环境搭建(一)

    知识点: 介绍Maven 本机搭建Maven环境 DEMO测试 本地仓库迁出 Maven简介: 百度百科: 说到底就是一个项目管理工具. 本机搭建Maven环境: Maven的环境需要jdk环境的支持 ...

  4. FIR滤波器和IIR滤波器的区别

    数字滤波器广泛应用于硬件电路设计,在离散系统中尤为常见,一般可以分为FIR滤波器和IIR滤波器,那么他们有什么区别和联系呢. FIR滤波器 定义: FIR滤波器是有限长单位冲激响应滤波器,又称为非递归 ...

  5. PL/SQL 训练02--集合数组

    1. 请列举关联数组.嵌套表.VARRAY三种集合类型的区别区别:1 关联数组只能在plsql中使用,嵌套表,varray可用于sql中,数据库表中的列2 嵌套表,varray必须在使用的时候初始化, ...

  6. 查询mysql 哪些表正在被锁状态

    查询mysql 哪些表正在被锁状态 show OPEN TABLES where In_use > 0; 参考链接:http://zhidao.baidu.com/link?url=tCQ70t ...

  7. flask系列七之cookie和session

    该部分参考链接: http://blog.csdn.net/qq_28877125/article/details/77677890 http://blog.csdn.net/qq_28877125/ ...

  8. Python中的 set 与 深浅拷贝

    字符串 join() 格式:   "拼接的东西".join(可迭代对象) 可以加列表转换成字符串 lis = ['a','b','c','d'] s = "//" ...

  9. spring中aop原理

  10. JAVA 微信开发

    公司最近要搭建一个java的微信系统,感觉自己没有记录的很多所以从今天开始每天开始更新一遍java的微信文章记录. 如有兴趣的可以加入群463676190,一起交流交流