这题调试了很久,开始自己试图按照自己的理解实现prim算法,但是总是出错。后来参考了网上的算法模板,总算把此题解决。算法模板可以用,但不可以滥用,最好是理解使用的细节,代码库不在多,好用是关键!
基本算法是:修好的路的边权值赋为0,再用prim求最小生成树输出权值。
#include <iostream> #define MAXN 200 #define inf 10000 typedef int elem_t; using namespace std; elem_t prim(int n,elem_t mat[MAXN][MAXN],int* pre){ elem_t min[MAXN],ret=0; int v[MAXN],i,j,k; for (i=0;i<n;i++) min[i]=inf,v[i]=0,pre[i]=-1; for (min[j=0]=0;j<n;j++){ for (k=-1,i=0;i<n;i++) if (!v[i]&&(k==-1||min[i]<min[k])) k=i; for (v[k]=1,ret+=min[k],i=0;i<n;i++) if (!v[i]&&mat[k][i]<min[i]) min[i]=mat[pre[i]=k][i]; } return ret; } int main(){ int n,i,j,result,q,a,b; int pre[MAXN]; int distance[MAXN][MAXN]; cin>>n; for (i = 0;i < n;i++) for (j = 0;j < n;j++) { cin>>distance[i][j]; } cin>>q; for (i = 0;i < q;i++) { cin>>a>>b; distance[a-1][b-1] = 0; distance[b-1][a-1] = 0;//如果某条路已经修好,赋其权值为0 } result = prim(n,distance,pre); cout << result; return 0; }
您还没有登录,请您登录后再发表评论
NULL 博文链接:https://128kj.iteye.com/blog/1705139
NULL 博文链接:https://128kj.iteye.com/blog/1704752
北大POJ1789-Truck History【Prim】 解题报告+AC代码
NULL 博文链接:https://200830740306.iteye.com/blog/603493
先利用prim算法求出最小生成树,然后通过往MST里加边来判断新生成的最小生成树是否具有最小的权值,POJ上The Unique MST(1679)题是要求判断最小生成树是否唯一,此题其实根本不用这样做,但是为了练习球次小生成树...
北大POJ2485-Highways【Prim】 解题报告+AC代码
北大POJ1258-Agri-Net【Prim】 解题报告+AC代码
POJ中级图算法所有题目【解题报告+AC代码】 我的所有POJ解题报告 http://blog.csdn.net/lyy289065406/article/details/6642573
poj上的算法题目分类,对于大家想练习算法的同鞋可以参考一下,里面按类列出了各种算法的题号。
北大POJ初级-图算法 解题报告+AC代码
北大POJ初级-基本算法 解题报告+AC代码
解决算法问题 poj1082, poj1150, poj1180, poj1201, poj1222,代码完成所给题目要求。
自己写的,里面有运行时间和内存,还有记录了所使用的算法。
Poj中一些题目的源代码,里面共有二十多道题目,OI
度限制最小生成树代码 摘自POJ1639代码
POJ题目分类,列出了所有的类目,里面写了一些很好的框架。
北大POJ3026-Borg Maze【BFS+Prim】 解题报告+AC代码
(3)最小生成树算法(prim,kruskal) (poj1789,poj2485,poj1258,poj3026) (4)拓扑排序 (poj1094) (5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020) (6)最大流的增广路算法(KM算法). (poj1459,poj3436) .....
poj2516代码最小费用最大流
POJ1083的代码,POJ1083的代码,POJ1083的代码
相关推荐
NULL 博文链接:https://128kj.iteye.com/blog/1705139
NULL 博文链接:https://128kj.iteye.com/blog/1704752
北大POJ1789-Truck History【Prim】 解题报告+AC代码
NULL 博文链接:https://200830740306.iteye.com/blog/603493
先利用prim算法求出最小生成树,然后通过往MST里加边来判断新生成的最小生成树是否具有最小的权值,POJ上The Unique MST(1679)题是要求判断最小生成树是否唯一,此题其实根本不用这样做,但是为了练习球次小生成树...
北大POJ2485-Highways【Prim】 解题报告+AC代码
北大POJ1258-Agri-Net【Prim】 解题报告+AC代码
POJ中级图算法所有题目【解题报告+AC代码】 我的所有POJ解题报告 http://blog.csdn.net/lyy289065406/article/details/6642573
poj上的算法题目分类,对于大家想练习算法的同鞋可以参考一下,里面按类列出了各种算法的题号。
北大POJ初级-图算法 解题报告+AC代码
北大POJ初级-基本算法 解题报告+AC代码
解决算法问题 poj1082, poj1150, poj1180, poj1201, poj1222,代码完成所给题目要求。
自己写的,里面有运行时间和内存,还有记录了所使用的算法。
Poj中一些题目的源代码,里面共有二十多道题目,OI
度限制最小生成树代码 摘自POJ1639代码
POJ题目分类,列出了所有的类目,里面写了一些很好的框架。
北大POJ3026-Borg Maze【BFS+Prim】 解题报告+AC代码
(3)最小生成树算法(prim,kruskal) (poj1789,poj2485,poj1258,poj3026) (4)拓扑排序 (poj1094) (5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020) (6)最大流的增广路算法(KM算法). (poj1459,poj3436) .....
poj2516代码最小费用最大流
POJ1083的代码,POJ1083的代码,POJ1083的代码