生成树
文章平均质量分 78
dy0607
Keep on coding
展开
-
POJ 3164 有向图的最小生成树
题意:给出n个点以及每个点的坐标,以及m条有向边(边权为两点距离),求一个最小生成树,使1号点可以到达其它所有点。思路:朱刘算法1)找出除根节点外其它点 i 的最小入边,将边权 in[i] 加入答案2)若找出的边不构成环,输出答案;若没有找到入边,无解3)否则将找到的环缩为一个点,重新设置其它边 i -> j 的权为 w[i][j] - in[j](相当与删去原来指向 j 的边,将原创 2016-10-13 21:33:01 · 573 阅读 · 0 评论 -
POJ 1639 度限制最小生成树Prim
题意:给出n条无向带权边,求所有点的最小生成树,其中“Park”的度数不超过最后输入的k,输入保证有解。思路:思路其实很好理解,分为几个步骤:1.当然将“Park”作为根节点,一开始先删掉它,则原图会分为m个连通分量,分别记录它们的最小生成树,并记录每个分量与根的最小边,于是我们得到了根度数为m时的最小生成树。若k 2.然后考虑将生成树上的一些边替换成与根相邻的边,若根与节点v有边连接原创 2016-10-12 00:17:40 · 842 阅读 · 0 评论 -
POJ 3463 Dijkstra 次小生成树及数量
题意:T组数据,每组数据给一个有向图,以及起点和终点,求从起点到终点的最短路个数,加上长度为(最短路长度+1)的路径条数。思路:Dijkstra cnt[i][0] 表示到第i个节点的最短路条数, d[i][0] 表示其长度 cnt[i][1]表示次短路条数,d[i][1] 表示其长度 实现与基本Dijkstra类似原创 2016-09-05 20:18:54 · 239 阅读 · 0 评论 -
POJ 2831 Prim
题意:给出一个n点m边的无向带权图,以及q个询问,每个询问查询当第i条边的权值改为x时,第i条边是否在该图的最小生成树(可能不唯一)之中。 思路:用Prim在n*n时间内求出最小生成树,并用Max[i][j]记录最小生成树上从i到j之间的边的权值最大值,每次询问只需判断两个节点之间边权最大值是否大于等于输入的x,若是则可以用这条修改过的边代替那条权值最大的边,输出Yes。注意可能有重边。 代码:原创 2016-08-30 21:00:52 · 319 阅读 · 0 评论