看图便知道:

来来上代码:
 
 
 
 

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;

int main()
{
int n;
while(~scanf("%d",&n))
{
int tu[n+1][n+1];
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
scanf("%d",&tu[i][j]);
int V[n+1];//存放生成的节点
for(int i=1; i<=n; i++)
V[i]=tu[1][i];//先初始化,别急,后面的会变的
bool op[n+1];//标记此节点是否访问过
memset(op,true,sizeof(op));
int sum=0;
op[1]=false;
for(int i=1; i<n; i++)//n-1条边
{
int j=0,k;

/*for(j=1; j<=n; j++)
cout<<V[j]<<" ";
cout<< "~~~~";
for(j=1; j<=n; j++)
cout<<op[j]<<" ";
cout<<endl;*/

int min=0x3f3f3f3f;
int flag=0;
for(int j=1; j<=n; j++)
if( op[j]&&V[j]<min)//找节点中权值最小的并且是没有找过的
{
min=V[j];
flag=j;//记录下来
}

/*system("pause");
cout<<"min="<<min<<" flag="<<flag<<endl;*/

op[flag]=false;//此节点已经访问过
sum+=min;//加起来

/*for(j=1; j<=n; j++)
cout<<V[j]<<" ";
cout<< "~~~~";
for(j=1; j<=n; j++)
cout<<op[j]<<" ";
cout<<endl;*/

for(j=1; j<=n; j++)
if(op[j]&&tu[flag][j]<V[j])//在刚才找的节点后面继续找此节点后面权值的最小的节点

{
V[j]=tu[flag][j];//放到最生成树的节点中
k=j;
}

/*system("pause");

cout<<endl;
cout<< "V[k]="<< V[k]<<endl;
}*/

printf("%d\n",sum);
}
return 0;
}

/*
4
0 4 9 21
4 0 8 17
9 8 0 16
21 17 16 0
 
*/
 
 
/*

6
0 6 1 5 7 5
6 0 5 10 3 9
1 5 0 5 6 4
5 10 5 0 8 2
7 3 6 8 0 6
5 9 4 2 6 0

 
*/
 
 
 
 
 
 
 
 
 
 
 
 

Agri-Net(prim算法,最小生成树问题)的更多相关文章

  1. prim解决最小生成树问题

    #include <iostream> #include <algorithm> #include <stdio.h> #include <math.h> ...

  2. 最小生成树问题---Prim算法与Kruskal算法实现(MATLAB语言实现)

    2015-12-17晚,复习,甚是无聊,阅<复杂网络算法与应用>一书,得知最小生成树问题(Minimum spanning tree)问题.记之. 何为树:连通且不含圈的图称为树. 图T= ...

  3. 最小生成树问题------------Prim算法(TjuOj_1924_Jungle Roads)

    遇到一道题,简单说就是找一个图的最小生成树,大概有两种常用的算法:Prim算法和Kruskal算法.这里先介绍Prim.随后贴出1924的算法实现代码. Prim算法 1.概览 普里姆算法(Prim算 ...

  4. 最小生成树问题:Kruskal算法 AND Prim算法

    Kruskal算法: void Kruskal ( ) {     MST = { } ;                           //边的集合,最初为空集     while( Edge ...

  5. 最小生成树问题---Prim算法学习

    一个具有n个节点的连通图的生成树是原图的最小连通子集,它包含了n个节点和n-1条边.若砍去任一条边,则生成树变为非连通图:若增加一条边,则在图中形成一条回路.本文所写的是一个带权的无向连通图中寻求各边 ...

  6. 最小生成树问题(prim算法)POJ-1258 Agri-Net

    /* 这个题很水,但是,莫名其妙runtime error一晚上,重写了一遍就又没了,很伤心! 题意很简单,大致为n个村庄,连光缆,要求连上所有村庄的长度最短. 输入n,接着是n*n的矩阵,直接用pr ...

  7. 【算法】Kruskal算法(解决最小生成树问题) 含代码实现

    Kruskal算法和Prim算法一样,都是求最小生成树问题的流行算法. 算法思想: Kruskal算法按照边的权值的顺序从小到大查看一遍,如果不产生圈或者重边,就把当前这条边加入到生成树中. 算法的正 ...

  8. 最小生成二叉树-prim算法

    1.prim算法:一种计算生成最小生成树的方法,它的每一步都会为一棵生长中的树添加一条边. 2.时间复杂度:

  9. 最小路径(prim)算法

    #include <stdio.h>#include <stdlib.h>/* 最小路径算法 -->prim算法 */#define VNUM 9#define MV 6 ...

  10. 最小生成树 kruskal算法&prim算法

    (先更新到这,后面有时间再补,嘤嘤嘤) 今天给大家简单的讲一下最小生成树的问题吧!(ps:本人目前还比较菜,所以最小生成树最后的结果只能输出最小的权值,不能打印最小生成树的路径) 本Tianc在刚学的 ...

随机推荐

  1. R文件丢失异常原因汇总

    引言: R文件丢失异常在java开发中是个比较常见的异常,造成这个异常的原因可能非常微小,但是给Android开发者们造成的麻烦可是巨大的,当程序员们费尽千辛万苦,找到自己错在哪里的时候,绝对会对自己 ...

  2. ab安装和使用

    apache bench(专门用于 HTTP Server .单url).win8: 下载地址:http://httpd.apache.org/download.cgi#apache24 安装apac ...

  3. sql server查询时候注意的基本优化常识

    1.在Where条件中尽量不要在=号左边进行函数.运算符.或表达式计算 2.在Where中尽量避免出现!=或<>操作符: 3.在Where中尽量避免对字段进行null值判定: 4.使用Li ...

  4. 【转】iOS-Core-Animation-Advanced-Techniques(三)

    原文: http://www.cocoachina.com/ios/20150105/10827.html 专用图层 复杂的组织都是专门化的--Catharine R. Stimpson 到目前为止, ...

  5. JavaScript Boolean(布尔) 对象

    创建 Boolean 对象 Boolean 对象代表两个值:"true" 或者 "false" 下面的代码定义了一个名为 myBoolean 的布尔对象: va ...

  6. javascript基础学习(四)

    javascript之流程控制语句 学习要点: 表达式语句含义 选择语句:if.if...else.switch 循环语句:while.do...while.for.for...in 跳转语句:bre ...

  7. SGU 139.Help Needed!

    题意: 判断15数码问题是否有解. 如果0的偏移量和逆序对个数同奇偶则无解. 因为目标状态的偏移量为0,逆序对为15,而0移动的时候偏移量±1,逆序对的改变量为也为奇数. 这就使得偏移量和逆序对数始终 ...

  8. linux负载均衡

    1.linux lvs nat实现负载均衡 添加两块网卡并开启路由管道 > /proc/sys/net/ipv4/ip_forward //开始路由管道 安装ipvsadm yum instal ...

  9. Oracle数据库之视图与索引

    Oracle数据库之视图与索引 1. 视图简介 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改. 视图基于的表称为基表,视图是存储在数据字典里的一条SE ...

  10. .NET Framework(一)

    .NET Framework:即Microsoft .NET Framework,它是用于Windows的新托管代码编程模型.它强大功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序 ...