摘要: 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2112这一题与上面的图论的题有很大不同,对于这一题对于这题有两种解法,Dijkstra算法或者floyd算法,只是我也没理解好,在别人的帮助下勉强整出dijkstra算法解这一题,由于题目本身比上几个稍微难理解点,所以附上dijkstra算法的课件的部分;Dijkstra算法依最短路径的长度递增的次序求得各条路径。设置一个集合S,该集合中存放从给定源点出发最短路径已知的所有顶点。因此算法开始时,集合S中只有源点一个顶点。随着算法的进行,其余的顶点被逐步加入集合S。因此算法要解... 阅读全文
posted @ 2011-08-09 20:01 world_ding 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 上一篇恰好也是对图论的理解,所以这次解释比较比较少,如果有什么不太懂得地方,可以参考上面的,也可以留言,我会尽最大努力解释:View Code # include<stdio.h> # include<stdlib.h># include<string.h># include<math.h>struct node { int num1,num2; ///代表庄 int cost; ///代表庄之间的维修费用};node count[10000];int flag[100];int cmp(const void *a,const void *b){ 阅读全文
posted @ 2011-08-09 14:28 world_ding 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1162 View Code 1 # include<stdio.h> ///大部分与上几个理解有相似之处,我把不同的地方标注一下,便于理解 2 # include<stdlib.h> 3 # include<string.h> 4 # include<math.h> 5 double x[5000],y[5000];///存的是两个点的x,y左标 6 int flag[5000]; 7 struct node 8 { 9 int num1,num2; 阅读全文
posted @ 2011-08-09 10:43 world_ding 阅读(130) 评论(0) 推荐(0) 编辑