- 博客(5)
- 收藏
- 关注
转载 并查集的 路径压缩(递归和非递归)
这里的思路是 在每一次的找父亲节点的时候我们把每一个孩子的父亲的改成他的祖先。因为有可能一个孩子的关系很复杂可能就是一条链,这样查找就没浪费时间。 //这是简单的递归实现 find (int x) { while(x!=father[x]) father[x] = find(father[x]) ; return father[x] ; } //这...
2014-07-31 08:34:00
349
转载 优先队列来处理的 最短路径
看了好久终于看懂了 ,首先你要知道 优先队列在这里的作用是什么。在Djsktra的算法中 我们需要有三个for 其中有个for是要找到 连接中最小的点 并且返回该点 ,这里的优先队列把这个for循环替掉。 typedef pair pii; priority_queue< pii , vector , greater > q; 这个优先队列是根据 pai...
2014-07-31 08:33:00
293
转载 并查集的粗劣想法(易懂)
这里我自己说一下我自己学的感受吧 。 int findset(int a) //不带路劲压缩 { while(pa[a] != a) { a = pa[a]; } return a; } ...
2014-07-31 08:32:00
118
转载 最短路径 简单的代码
看了这些代码之后 总结了一下 其实就那三个for 循环 一:找与v有连接的点 。二:从这些连接的点找到最小,把他看成是下一次的v 。 三: 你要把有出现的那些边 更新掉 。 详解在代码里写出了 #include #include #include using namespace std ; #define N 100 #define M 10...
2014-07-31 08:31:00
231
转载 最短路径之Kurskal
个人观点,较prime算法,Kurskal算法更加的简单,这里我们只需要每一次去需找权值最小的那条边就好,在这里我们先可以利用sort进行快排,得到权值最小的map[i] 。 得到该条边的两个节点map[i].u 和map[i].v,这时候你需要判断能不能用这条边,因为最小生成树是不能形成回路,所以用到了 并查集的方法,可以快速的判断这两个点是否满足条件。如果不存在关系那么那么就把这条边...
2014-07-30 10:53:00
132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅