题意:给全村建光纤,求花费最小

思路:最小生成树,树相对于图来说就是没有环

  1. m用来存图 v判断是否访问 low用来存两点间的最短距离
  2. 给low赋值  for(i=1;i<=n;i++){if(i!=pos)  low[i]=m[pos][i]  else low[i]=0;}
  3. 找最小值 即找顶点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;
  4. 更新权值 
     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 建光迁问题 最小生成树的更多相关文章

  1. 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 ...

  2. 最小生成树 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 // 顶点的最大个数 ( ...

  3. POJ 3026 Borg Maze【BFS+最小生成树】

    链接: http://poj.org/problem?id=3026 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

  4. POJ 1258 Agri-Net|| POJ 2485 Highways MST

    POJ 1258 Agri-Net http://poj.org/problem?id=1258 水题. 题目就是让你求MST,连矩阵都给你了. prim版 #include<cstdio> ...

  5. POJ 1258 + POJ 1287 【最小生成树裸题/矩阵建图】

    Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet c ...

  6. poj - 1258 Agri-Net (最小生成树)

    http://poj.org/problem?id=1258 FJ为了竞选市长,承诺为这个地区的所有农场联网,为了减少花费,希望所需光纤越少越好,给定每两个农场的花费,求出最小花费. 最小生成树. # ...

  7. (最小生成树)Agri-Net -- POJ -- 1258

    链接: http://poj.org/problem?id=1258 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82831#probl ...

  8. poj 1258 最小生成树 模板

    POJ 最小生成树模板 Kruskal算法 #include<iostream> #include<algorithm> #include<stdio.h> #in ...

  9. POJ 1258 最小生成树

    23333333333 完全是道水题.因为是偶自己读懂自己做出来的..T_T.prim的模板题水过. DESCRIPTION:John竞选的时候许诺会给村子连网.现在给你任意两个村子之间的距离.让你求 ...

随机推荐

  1. Oracle单列函数

    --字符函数--1.ASCII 返回与指定的字符对应的十进制数;select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space fr ...

  2. 使用jQuery实现文本框input定位到文字最后(兼容所有浏览器)

    $.fn.setCursorPosition = function(position){ if(this.lengh == 0) return this; return $(this).setSele ...

  3. 从零开始的全栈工程师——js篇2.2

    条件语句 补充: var a=“hello world” a这个变量是字符串了 对于里面每一个字母来说 他是字节 里面有11个字节 字节总数用length表示 如下: 根据上面的内容咱们又发现了一个运 ...

  4. jQuery遍历Table表格的行和列

    遍历Table表格的行和列,在开发中比较常用的功能,特别是前端开发人员,不多说,直接上代码,下面代码只是弹出第一列字段,请各位自己根据需求修改和扩展! <!DOCTYPE html PUBLIC ...

  5. MAC MAMP install yaf

    Yaf doesn't support PHP 5.6! You may see this: Warning: PHP Startup: yaf: Unable to initialize modul ...

  6. springMvc-视图模型封装及注解参数

    1.视图模型封装,ModelAndView可以向页面返回视图的同时吧模型也传入页面 2.注解参数,springMvc很好的地方在于简单,高效,@RequestParam注解能非常好的取得页面参数 代码 ...

  7. LeetCode Excel Sheet Column Number 表列数

    题意:天啊!我竟然看不懂题意,还去翻别人的代码才懂!给定一个字符串,求该字符串二十六进制的总值. 思路:'A'~'Z'就是1到26,"AA"=26+1=27,"BA&qu ...

  8. linux 命令——24 Linux文件类型与扩展名

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

  9. IOS Block动画

    ● + (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)dur ...

  10. iOS 集成支付宝过程中 我遇到的一些坑,请大家注意啦(ALI69错误,ALI64错误)

    支付宝很早一段时间就集成了,之前由于一直忙于开发就没有总结,今天整理桌面的时候看到,当时做支付时候的一些散落的笔记,就稍微整理一下,给大家分享一下. 第一:当时调用支付宝的时候,总是调不起来,进过断点 ...