
Dijkstra
文章平均质量分 71
userluoxuan
这个作者很懒,什么都没留下…
展开
-
HDU Today(三种写法)(最短路)
解题思路:题目唯一难点就是如何去表示地点,用map映射可以轻松搞定,一个地点名对应一个值,剩下的就是求最短路径。下面给出三个代码,第一个是用朴素Dijkstra写的,第二个用了Floyd,第三个用了Dijkstra + heap。感觉上运行效率差不多。。。。。AC代码:Dijkstra:#include #include #include #include usin原创 2014-07-27 16:30:01 · 1496 阅读 · 0 评论 -
Dijkstra + heap
用优先队列实现模板:struct node{ int pos, dist; friend bool operator < (node a, node b) { return a.dist > b.dist; }};int Dijkstra(int n,int start,int end){ bool visited[maxn]原创 2014-07-27 16:17:28 · 690 阅读 · 0 评论 -
朴素Dijkstra算法模板
朴素Dijkstra不需要用到堆,每次找最小值都得遍历一遍,时间复杂度较高。点是从编号0到编号n-1的n个点。以下是模板:int Dijkstra(int a,int b) //a是起点,b是终点{ bool visited[maxn]; // 记录访问点 int pos = a, min, dist[maxn]; // pos是个标记点,标记每次最小边对应的原创 2014-07-27 01:04:52 · 1784 阅读 · 1 评论 -
昂贵的聘礼(最短路)
Description年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。"探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用原创 2014-07-29 19:59:58 · 610 阅读 · 0 评论 -
畅通工程续(最短路)
解题思路:我用Dijkstra来做原创 2014-07-28 14:18:54 · 458 阅读 · 0 评论 -
Floyd算法模板
Floyd可以求出任意两点间的最短距离,代码也相对简单,对于稀疏图来说效率也还是不错的,但由于三个for循环导致时间复杂度较高,不适合稠密图。Floyd算法模板(精简版):void Floyd(){ int dist[maxn][maxn]; // dist存储i到j的最短距离 for(int k = 1; k <= n; k++) for(int原创 2014-07-27 12:28:57 · 1197 阅读 · 0 评论