POJ1233 Agri-Net(最小生成树,prim算法)
来源:互联网 发布:永久免费mysql数据库 编辑:程序博客网 时间:2024/05/17 00:18
最小生成树的Prim算法实现。
我想说一下我对下面代码的认识:
//更新权值 for(j=1;j<=n;j++) if(visited[j]==0&&low[j]>map[pos][j]) low[j]=map[pos][j]; }
我觉得这就是松弛的操作(relaxation),遍历没有访问的结点(visit[j]==0),用 源点到未访问点A的距离(low[j]) 和 集合内访问过的点(visit[j]==1)到未访问的点A的距离(map[pos][j])比较,进行一次松弛。如果满足条件,就更新源点到未访问点的距离。重复n-1个循环,把n-1个结点都放到集合内。
#include<stdio.h>#include<string.h>#include<iostream>#define max 0x3f3f3f#define N 110using namespace std;//创建map二维数组储存图表,low数组记录每2个点间最小权值,//visited数组标记某点是否已访问int map[N][N],low[N],visited[N];int n;int prim(){ int i,j,pos,min,result=0; memset(visited,0,sizeof(visited)); //从某点开始,分别标记和记录该点(源点) visited[1]=1;pos=1; //第一次给low数组赋值 for(i=1;i<=n;i++){ if(i!=pos) low[i]=map[pos][i]; } //再运行n-1次,将剩下的n-1个点放到集合中 for(i=1;i<n;i++){ //找出最小权值,并记录位置 min=max; for(j=1;j<=n;j++) if(visited[j]==0&&min>low[j]){ min=low[j]; pos=j; } //最小权值相加 result+=min; visited[pos]=1; //更新权值 for(j=1;j<=n;j++) if(visited[j]==0&&low[j]>map[pos][j]) low[j]=map[pos][j]; } return result;}int main(){ int i,v,j,ans; while(cin>>n){ //所有权值初始化为最大 memset(map,max,sizeof(map)); for(i=1;i<=n;i++) for(j=1;j<=n;j++){ cin>>v; map[i][j]=v; } ans=prim(); cout<<ans<<endl; } return 0;}
阅读全文
0 0
- POJ1233 Agri-Net(最小生成树,prim算法)
- poj-1258 Agri-Net(最小生成树 Prim算法)
- POJ1258 Agri-Net(最小生成树,prim算法)
- POJ 1258-Agri Net 最小生成树Prim算法
- POJ 1258 Agri-Net 图论 prim算法 最小生成树
- POJ 1258 Agri-Net(最小生成树prim算法)
- 【最小生成树之prim算法】POJ-1258---Agri-Net
- POJ 1258 Agri-Net 最小生成树 Prim算法
- POJ 1258 Agri-Net 最小生成树 Prim算法
- POJ 1258 Agri-Net(最小生成树prim算法)
- POJ 1258 Agri-Net 最小生成树 Prim 算法
- poj 1258 Agri-Net prim算法 最小生成树
- 最小生成树之Prim算法---POJ1258---Agri-Net
- POJ 1258 Agri-Net(最小生成树Prim算法)
- poj Agri-Net 最小生成树 prim 算法
- POJ1258 Agri-Net 【最小生成树Prim】
- POJ 1258:Agri-Net(最小生成树&&prim)
- POJ 1258-Agri-Net(最小生成树prim)
- Vim配置和插件
- UVA 674 Coin Change(完全背包)
- oo
- CSS
- UE4 “project setting”中“Map&Mode”详讲 (随记系列1_项目设置)
- POJ1233 Agri-Net(最小生成树,prim算法)
- PHP模式设计
- webservice
- Java集合之LinkedList源码分析
- 简明扼要地谈谈v8的隐藏类和Inline Cache(內联缓存)
- 科研知识扩展
- Java实现的生产者和消费者
- python 学习之初识
- android SQLiteOpenHelper读取数据