poj 1258 建光迁问题 最小生成树
题意:给全村建光纤,求花费最小
思路:最小生成树,树相对于图来说就是没有环
- m用来存图 v判断是否访问 low用来存两点间的最短距离
- 给low赋值 for(i=1;i<=n;i++){if(i!=pos) low[i]=m[pos][i] else low[i]=0;}
- 找最小值 即找顶点i的最小距离 for(int j=1;j<n;j++) for(int i=1;i<=n;i++) if(v[i]==0&&min>l[i]) min=l[i] pos=i;
- 更新权值
for(j = 1; j <= n; j++) //更新权值
if(visited[j]==0 && low[j]>m[pos][j])
low[j] = m[pos][j];
解决问题的代码:
#include <stdio.h>
#include <string.h>
#define INF 0x3f3f3f3f
#define MAXN 517
//创建m二维数组储存图表,low数组记录每2个点间最小权值,visited数组标记某点是否已访问
int m[MAXN][MAXN], low[MAXN], visited[MAXN];
int n;
int prim( )
{
int i, j;
int pos, minn, result=;
memset(visited,,sizeof(visited));
visited[] = ;
pos = ; //从某点开始,分别标记和记录该点
for(i = ; i <= n; i++) //第一次给low数组赋值
if(i != pos)
low[i] = m[pos][i];
else
low[i] = ;
for(i = ; i < n; i++) //再运行n-1次
{
minn = INF; //找出最小权值并记录位置
for(j=; j<=n; j++)
{
if(visited[j]== && minn>low[j])
{
minn = low[j];
pos = j;
}
}
result += minn; //最小权值累加
visited[pos] = ; //标记该点
for(j = ; j <= n; j++) //更新权值
if(visited[j]== && low[j]>m[pos][j])
low[j] = m[pos][j];
}
return result;
}
int main()
{
int i,j,ans;
while(scanf("%d",&n)!=EOF)
{
memset(m,INF,sizeof(m)); //所有权值初始化为最大
for(i = ; i <= n; i++)
for(j = ; j <= n; j++)
{
scanf("%d",&m[i][j]);
}
ans=prim( );
printf("%d\n",ans);
}
return ;
}
poj 1258 建光迁问题 最小生成树的更多相关文章
- poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
poj 1251 && hdu 1301 Sample Input 9 //n 结点数A 2 B 12 I 25B 3 C 10 H 40 I 8C 2 D 18 G 55D 1 E ...
- 最小生成树 10.1.5.253 1505 poj 1258 http://poj.org/problem?id=1258
#include <iostream>// poj 1258 10.1.5.253 1505 using namespace std; #define N 105 // 顶点的最大个数 ( ...
- POJ 3026 Borg Maze【BFS+最小生成树】
链接: http://poj.org/problem?id=3026 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
- POJ 1258 Agri-Net|| POJ 2485 Highways MST
POJ 1258 Agri-Net http://poj.org/problem?id=1258 水题. 题目就是让你求MST,连矩阵都给你了. prim版 #include<cstdio> ...
- POJ 1258 + POJ 1287 【最小生成树裸题/矩阵建图】
Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet c ...
- poj - 1258 Agri-Net (最小生成树)
http://poj.org/problem?id=1258 FJ为了竞选市长,承诺为这个地区的所有农场联网,为了减少花费,希望所需光纤越少越好,给定每两个农场的花费,求出最小花费. 最小生成树. # ...
- (最小生成树)Agri-Net -- POJ -- 1258
链接: http://poj.org/problem?id=1258 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82831#probl ...
- poj 1258 最小生成树 模板
POJ 最小生成树模板 Kruskal算法 #include<iostream> #include<algorithm> #include<stdio.h> #in ...
- POJ 1258 最小生成树
23333333333 完全是道水题.因为是偶自己读懂自己做出来的..T_T.prim的模板题水过. DESCRIPTION:John竞选的时候许诺会给村子连网.现在给你任意两个村子之间的距离.让你求 ...
随机推荐
- RabbitMQ 消息的可靠投递
mq 提供了两种方式确认消息的可靠投递 confirmCallback 确认模式 returnCallback 未投递到 queue 退回模式 在使用 RabbitMQ 的时候,作为消息发送方希望杜绝 ...
- 会话跟踪之Session
Session是服务端使用记录客户端状态的一种机制,Session使用简单,但是和Cookie相比,增加了服务器的存储压力[因为为了追求速度,服务器将Session放置在了内存中].Cookie是保存 ...
- visual studio2010中C#生成的,ArcGIS二次开发的basetool的dll,注册为COM组件tlb文件,并在arcmap中加载使用
写了个标题好长啊~~~~ 这两天又认识了一个新玩意,记录一下下,啦啦啦~~~~~ 话说,认识arcgis快十年了,从桌面版到engine的二次开发,其实不过才认识到它的冰山一角, 它总是能带来很多还未 ...
- 使用HTML5 canvas做地图(1)基础知识
之前一直想使用HTML5技术全新做一套地图API,可是苦于时间和精力,迟迟未有行动.后来下定决心,利用下班和周末做出一个大体框架出来,现在和网友分享一下自己的整体的一个思路和想法.欢迎大家提出宝贵建议 ...
- C++ 强制类型转换(转载)
转载自:http://www.weixueyuan.net/view/6329.html 在C++语言中新增了四个关键字static_cast.const_cast.reinterpret_cast和 ...
- cms-框架搭建
1.web.xml中的配置,在配置中主要有: 1.1.过滤器: 1.1.1:shiro权限过滤器 1.1.2:字符编码过滤器 1.2.监听器: 1.2.1:spring监听器 1.3.servlet ...
- linux命令 ——目录
开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstan ...
- Python开发第三篇
函数 一.函数参数传值 形参:函数在定义的时候给定的参数 实参:函数在运行时赋给的参数: def func(i):#i为定义时的参数,为形参 pass func(name)#name为运行时的参数,为 ...
- IOS Window窗口使用
// 程序启动完毕之后就会调用一次 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NS ...
- 客户端(springmvc)调用netty构建的nio服务端,获得响应后返回页面(同步响应)
后面考虑通过netty做一个真正意义的简约版RPC框架,今天先尝试通过正常调用逻辑调用netty构建的nio服务端并同步获得返回信息.为后面做铺垫 服务端实现 我们先完成服务端的逻辑,逻辑很简单,把客 ...