随笔分类 -  图-minimum spanning tree

次短路径与次小生成树 [转]
摘要:[次短路径]次短路径可以看作是k短路径问题的一种特殊情况,求k短路径有Yen算法等较为复杂的方法,对于次短路径,可以有更为简易的方法。下面介绍一种求两个顶点之间次短路径的解法。我们要对一个有向赋权图(无向图每条边可以看作两条相反的有向边)的顶点S到T之间求次短路径,首先应求出S的单源最短路径。遍历有向图,标记出可以在最短路径上的边,加入集合K。然后枚举删除集合K中每条边,求从S到T的最短路径,记录每次求出的路径长度值,其最小值就是次短路径的长度。在这里我们以为次短路径长度可以等于最短路径长度,如果想等,也可以看作是从S到T有不止一条最短路径。如果我们规定求从S到T大于最短路径长度的次短路径,则 阅读全文

posted @ 2011-11-17 22:59 龙豆 阅读(1926) 评论(0) 推荐(0) 编辑

poj-1251 Jungle Roads *
摘要:/* * 1251.cpp * 纯粹MST。。 Prim实现 * * Created on: 2011-9-2 * Author: * * 开始用scanf, WA, 后改成cin, AC了~ 不知怎么回事 总之对C的输入输出理解的还不够好~ */#include <cstdio>#include <iostream>usingnamespace std;constint maxN =27+5;constint inf =100000000;int n, w[maxN][maxN], d[maxN], ans;intbase='A'-1;int inli 阅读全文

posted @ 2011-09-02 15:26 龙豆 阅读(292) 评论(0) 推荐(0) 编辑

poj-1258 Agri-Net **
摘要:/* * 纯粹的最短路 prim 用 二叉堆 实现 * * 用二叉堆实现优先级队列 比较麻烦~ 后面附上直接用数组的 * */#include <cstdio>#include <cstring>usingnamespace std;constint maxN =100+5;constint inf =100000000;int n, G[maxN][maxN], len; //len:二叉堆数组的长度int ans;bool S[maxN];int d[maxN], vertex[maxN], reverse[maxN]; //二叉堆中节点的域int inline l 阅读全文

posted @ 2011-09-02 10:26 龙豆 阅读(254) 评论(0) 推荐(0) 编辑

poj-2421 Constructing Roads *
摘要:/* * 蛮水的一道MST Kruskal, 链表实现 * * 预处理: * 根据已有的边,把相应的集合合并。。再Kruskal * * 另一种方法: * 把已有边的权值改为0 * */#include <cstdio>#include <algorithm>using namespace std;const int maxN = 100 + 5;int n, totEdgeNum, G[maxN][maxN], q, ans;struct SEdge{ int w, u, v;};SEdge edge[maxN * maxN];struct SNode{ int... 阅读全文

posted @ 2011-09-02 10:16 龙豆 阅读(267) 评论(0) 推荐(0) 编辑

poj-1789 Truck History *
摘要:/* * 很直接的最小生成树 * * 版本一: Kruskal, 链表实现 * */#include <cstdio>#include <algorithm>using namespace std;const int maxN = 2000 + 5;const int letterNum = 7;int n, totEdgeNum, ans;char code[maxN][letterNum + 2];struct SEdge{ //边 int w, u, v;};SEdge edge[maxN * maxN];struct SNode{ //... 阅读全文

posted @ 2011-09-01 14:12 龙豆 阅读(313) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示