Dijstra算法-------为了纪念,等以后看的时候方便
杭电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
Input
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算法-------为了纪念,等以后看的时候方便相关推荐
- 十大经典排序算法动画与解析,看我就够了
作者 | 程序员小吴 转载自五分钟学算法(ID: CXYxiaowu) 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序.内部排序是数据记录在内存中进行 ...
- poj2387(Dijstra算法)
这道题就是模版题,直接上代码: Dijstra算法 #include<iostream> #include<algorithm> #include<cmath> # ...
- 炼数成金数据分析课程---17、机器学习聚类算法(后面要重点看)
炼数成金数据分析课程---17.机器学习聚类算法(后面要重点看) 一.总结 一句话总结: 大纲+实例快速学习法 主要讲解常用聚类算法(比如K-means等)的原理及python代码实现:后面学习聚类的 ...
- C++两个函数可以相互递归吗_[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进
[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. ...
- [算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进
[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. ...
- 最萌算法学习来啦,看不懂才怪!| 码书
普通程序员,不学算法,也可以成为大神吗? 对不起,这个,绝对不可以. 可是算法好难啊~~看两页书就想睡觉-- 所以就不学了吗?就一直当普通程序员吗? 如果有一本算法书,看着很轻松--又有代码示例--又 ...
- HDU1874(Dijstra算法)
#include<iostream> #include<algorithm> #include<cstring> #include<cmath> usi ...
- HDU2112(Flody算法和Dijstra算法)
采用Flody算法时一定要注意那个cnt的下标,我也是在这里卡了一定的时间,可能是我的经验还远远不够. 方法一: #include<iostream> #include<algori ...
- HDU2544(Dijstra算法)
#include<iostream> #include<algorithm> #include<cstring> #include<cmath> #in ...
最新文章
- 优化实战:不要随便将字段折腾来折腾去的
- 花了我一天一夜整理出的软件测试学习路线
- 搜索引擎的两大问题(1) - 召回
- 以local模式使用Xshell+Xmanager远程监控jvisualvm
- IntelliJ IDEA配置maven,并创建一个实例作为演示
- 3D Object Classification With Point Convolution —— 点云卷积网络
- Socket之UDP客户端【Python】
- 管理任务执行-有效执行
- leetcode105 前序中序遍历序列构造二叉树
- python怎么播放mp3_python上播放mp3歌曲
- 关于MATLAB实现的数字信号处理(二)
- start-dfs.sh\stop-dfs.sh启动失败
- 如何将dwg文件转成kml文件
- 陆维家具设计拆单软件
- android 摄像头黑屏,5+app 安卓调用摄像头黑屏 苹果可以
- 高电平和低电平之间的电平芯片会识别成什么
- Topic 12 临床预测模型之列线表 (Nomogram)
- 人工智能之人工神经网络
- 一行代码“黑”掉任意网站
- php+server注册机制,ECMall的注册与登录机制