最小生成树(prim算法)--poj1258
来源:互联网 发布:淘宝网买笔和笔蕊 编辑:程序博客网 时间:2024/05/17 21:59
第一次做图论的题目,这是一道最小生成树的入门题,用的是prim算法。
题意:要在村子里连上互联网,从john家作为起点,问最短的路径。
思路:prim算法,use用来标识是否在最小生成树中,dist相当于存储生成树外节点与生成树节点的最短边长。
#include<iostream>#include<climits>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int farm[105][105];int use[105];int dist[105];int main(){ //freopen("in.txt","r",stdin); int n; int sum; while(cin>>n) { memset(use,0,sizeof(use)); sum=0; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) { cin>>farm[i][j]; if(i==1) dist[j]=farm[i][j]; } dist[1]=INT_MAX; use[1]=1; for(int i=2; i<=n; i++) { int temp=1; for(int j=2; j<=n; j++) if(dist[j]<dist[temp]&&!use[j]) temp=j; use[temp]=1; sum+=dist[temp]; for(int j=1; j<=n; j++) if(!use[j]) dist[j]=min(dist[j],farm[j][temp]); } cout<<sum<<endl; } return 0;}
这里总结一下prim的过程:
首先是设一个优先队列存储上述的dist值,如果队列非空,从中找出最小值,添加到最小生成树中。然后住处队列中与该节点相连的节点,进行宽松处理,即如果相邻节点到该节点的值小于原来的值的话,则将该值改为到该节点的值。
- 最小生成树(prim算法)--poj1258
- POJ1258 最小生成树prim算法
- poj1258 最小生成树 prim算法
- POJ1258最小生成树(prim算法)
- poj1258--最小生成树prim算法实现
- 最小生成树 Prim算法 POJ1258题解
- POJ1258 Agri-Net(最小生成树,prim算法)
- poj1258 prim最小生成树
- poj1258 prim最小生成树
- poj1258(最小生成树Prim)
- 最小生成树(Prim)poj1258
- poj1258 最小生成树,prim
- POJ1258--贪心&最小生成树的prim算法
- 最小生成树之Prim算法---POJ1258---Agri-Net
- 最小生成树poj1258 prim和kruskal
- [POJ1258]最小生成树+PRIM+KURSKAL
- POJ1258 Agri-Net 【最小生成树Prim】
- poj1258(最小生成树 kruskal算法)
- Ubuntu .deb包安装方法
- JAVA中重写equals()方法为什么要重写hashcode()方法?
- 使用Visual Stuido 2012应用程序向导创建MFC DLL
- 生成Hibernate映射文件时 常见字段类型转换
- ACM学习计划
- 最小生成树(prim算法)--poj1258
- RTXSDK教程之进阶篇:编程要点
- android ActivityInfo使用
- SEO站内优化之十一大步骤
- 2013-7-17学习作业练习
- linux内核链表之list_entry(ptr,type,member)函数详解
- Linux Socket编程
- py 相关
- 提升android开发的小技巧-利用系统自带脚本.