杭电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>
 2 #include<cstring>
 3 //#include<fstream>
 4 using namespace std;
 5 int T,S,D;
 6 int arr[1004][1004];
 7 bool judge[1004];
 8 int d[1004];
 9
10 void Dijkstra(int star,int endf)//此处就是我上篇写的模板,只是改动了参数变量以及那因题而异的“最小值”11 {
12     for(int f=1;f<=endf;f++)
13         d[f]=arr[star][f];
14     memset(judge,false,sizeof(judge));
15     judge[star]=true;
16     d[star]=0;
17     for(int i=1;i<=endf;i++)
18     {
19         int min=10000000000,g=0;
20         for(int k=1;k<=endf;k++)
21             if(!judge[k]&&d[k]<min)
22             {
23                 min=d[k];
24                 g=k;
25             }
26             judge[g]=true;
27         for(int j=1;j<=endf;j++)
28             if((d[g]+arr[g][j]<d[j]))
29                 d[j]=d[g]+arr[g][j];
30
31     }
32 }
33 int main()
34 {   // freopen("in.txt","r",stdin);
35     int a,b,time,c;
36     while(cin>>T>>S>>D)37     {   int ma=0;
38         memset(arr,10,sizeof(arr));
39         for(c=0;c<T;c++)
40         {
41             cin>>a>>b>>time;
42             if(time<arr[a][b])
43             arr[a][b]=arr[b][a]=time;
44              if(a>ma) ma=a;//很牛的是这里,当然了也是看到大牛的杰作,这次会了,下次也就成大牛了45              if(b>ma) ma=b;//ma就是用来求出顶点编号最大的46         }
47         ma++;//最大的加一以后是什么结果呢//就是相当于把草儿想去的地方归结到一个顶点,这样做的话,对于应用Dijstra是有很大的益处的48         for(c=0;c<S;c++) {cin>>a;arr[0][a]=0;}
49         for(c=0;c<D;c++) {cin>>a;arr[a][ma]=0;}//那就是这句了50          Dijkstra(0,ma);
51       cout<<d[ma]<<endl;
52     }
53     return 0;
54 }

思路很清晰吧!再啰嗦一下思路:1:首先按题目条件读入数据,并作适当处理,个人认为Dijstra算法如何应用取决与开始对数据的处理以及它内部的一些微小改变(就如此题在开始的时候对数据进行预处理就大大简化了后面的操作)2:直接用Dijstra算法模板,只不过那个参数要稍微改变一下3:最大值一定要选取恰当,小的话就会wronganswer,大的话就有可能超时

好了就这么多了,保证我过一个月后能看懂就可以啦

转载于:https://www.cnblogs.com/Chinahenu/p/Dijstra.html

Dijstra算法-------为了纪念,等以后看的时候方便相关推荐

  1. 十大经典排序算法动画与解析,看我就够了

    作者 | 程序员小吴 转载自五分钟学算法(ID: CXYxiaowu) 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序.内部排序是数据记录在内存中进行 ...

  2. poj2387(Dijstra算法)

    这道题就是模版题,直接上代码: Dijstra算法 #include<iostream> #include<algorithm> #include<cmath> # ...

  3. 炼数成金数据分析课程---17、机器学习聚类算法(后面要重点看)

    炼数成金数据分析课程---17.机器学习聚类算法(后面要重点看) 一.总结 一句话总结: 大纲+实例快速学习法 主要讲解常用聚类算法(比如K-means等)的原理及python代码实现:后面学习聚类的 ...

  4. C++两个函数可以相互递归吗_[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进

    [算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. ...

  5. [算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进

    [算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. ...

  6. 最萌算法学习来啦,看不懂才怪!| 码书

    普通程序员,不学算法,也可以成为大神吗? 对不起,这个,绝对不可以. 可是算法好难啊~~看两页书就想睡觉-- 所以就不学了吗?就一直当普通程序员吗? 如果有一本算法书,看着很轻松--又有代码示例--又 ...

  7. HDU1874(Dijstra算法)

    #include<iostream> #include<algorithm> #include<cstring> #include<cmath> usi ...

  8. HDU2112(Flody算法和Dijstra算法)

    采用Flody算法时一定要注意那个cnt的下标,我也是在这里卡了一定的时间,可能是我的经验还远远不够. 方法一: #include<iostream> #include<algori ...

  9. HDU2544(Dijstra算法)

    #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #in ...

最新文章

  1. 优化实战:不要随便将字段折腾来折腾去的
  2. 花了我一天一夜整理出的软件测试学习路线
  3. 搜索引擎的两大问题(1) - 召回
  4. 以local模式使用Xshell+Xmanager远程监控jvisualvm
  5. IntelliJ IDEA配置maven,并创建一个实例作为演示
  6. 3D Object Classification With Point Convolution —— 点云卷积网络
  7. Socket之UDP客户端【Python】
  8. 管理任务执行-有效执行
  9. leetcode105 前序中序遍历序列构造二叉树
  10. python怎么播放mp3_python上播放mp3歌曲
  11. 关于MATLAB实现的数字信号处理(二)
  12. start-dfs.sh\stop-dfs.sh启动失败
  13. 如何将dwg文件转成kml文件
  14. 陆维家具设计拆单软件
  15. android 摄像头黑屏,5+app 安卓调用摄像头黑屏 苹果可以
  16. 高电平和低电平之间的电平芯片会识别成什么
  17. Topic 12 临床预测模型之列线表 (Nomogram)
  18. 人工智能之人工神经网络
  19. 一行代码“黑”掉任意网站
  20. php+server注册机制,ECMall的注册与登录机制

热门文章

  1. mysql集群之MHA简单搭建
  2. phpMyadmin出现错误提示
  3. cocos2d-x常用工具-沈大海cocos2d-x教程23
  4. 装好XP,打开SATA开机蓝屏解决方法
  5. iOS逆向之自动化重签名
  6. Mysql用户访问工作原理
  7. 开启和关闭HBase的thrift进程
  8. 转 文件路径相关的字符串操作
  9. spring.net 对象创建 几种情况
  10. 【转载】强大的MongoDB数据库管理工具