随笔分类 - 算法训练-图论-最小生成树
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301方法:直接建模后用prim算法感想:简单题代码:#include<iostream>#include <queue>using namespace std;struct fuckNode{ int index; int distance;}; struct cmp{ bool operator ()(fuckNode x, fuckNode y) { return x.distance> y.distance; // x小的优先级高 }}; int...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1879方法:在接收输入的时候,如果两个地方已经存在道路,则将道路上的点加入到并查集,同时,该边在后期计算最小生成树时,不予考虑。不予考虑的方式就是不把该边纪录在邻接矩阵里面。而道路还没有修建的两个点,在考虑的时候是只把该两点间的最小修建费用作为权值的边纪录在邻接矩阵里面。然后把矩阵中的边排序,准备开始调用kruskal算法。在调用该算法往集合添加轻边的时候,要考虑该边的两个端点是否已经因为前面添加的轻边而已经在生成树里,这个时候用到并查集。由于之前已经添加已修建的道路的两个顶点在并查集中,所以该两点
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1875方法:在往优先队列中加入定点的时候,判断当前队列出来的点探寻到其时到其的距离是否满足限制条件,不满足,该顶点就不进优先队列,相当于该边在图里不存在。感想:简单题。代码:View Code #include<iostream>#include<queue>#include<math.h>using namespace std;int const MAX =0x3f3f3f3f;struct Node { int x; int y; double distanc
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162方法:由于没两个点都有边,且边的代价要算,因此用kruskal算的话光光是算边的代价实践复杂度就是o(v^2),所以用prime的.感想:最简单基本赤裸裸的最小生成树。代码:View Code #include<iostream>#include<queue>#include<math.h>using namespace std;int const MAX =0x3f3f3f3f;struct Node { double x; double y; doubl
阅读全文
浙公网安备 33010602011771号