看图便知道:

来来上代码:
 
 
 
 

#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. HTML5 <Audio/>标签Api整理(二)

    1.实例2: 相对较完整 Html代码: <style> #volumeSlider .slider-selection { background:#bababa; } </styl ...

  2. mac 下安装安卓模拟器

    mac下的安卓模拟器——bluestacks 下载:http://pan.baidu.com/s/1kVvZyYz 该安卓模拟器除了能网络下载apk,本地还能安装apk,但是与win版不同,安装不是那 ...

  3. Spring MVC返回json数据给Android端

    原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json ...

  4. 使用highlight.js高亮你的代码

    在逛别人的博客的时候,看见别人的代码的例子使用了高亮的语法,无论是java,js还是php等等语言,都会自动的对关键字进行高亮. 于是在前几天自己写了一个博客,遇到code时,自然就想到了别人网站如何 ...

  5. git 教程 git.oschina.net

    官方说明:http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#ssh-keys 安装完成后,在开始菜单里找到"Gi ...

  6. Template 模式

    Template 模式是很简单模式,但是也应用很广的模式.Template 是采用继承的方式实现算法的异构,其关键点就是将通用算法封装在抽象基类中,并将不同的算法细节放到子类中实现.Template ...

  7. nim

    上帝创造了一个n*m棋盘,每一个格子都只有可能是黑色或者白色的. 亚当和夏娃在玩一个游戏,每次寻找边长为x的正方形,其中每个格子必须为黑色,然后将这些格子染白. 如果谁不能操作了,那么那个人就输了. ...

  8. Java学习随笔——RMI

    RMI(Remote Method Invocation)远程方法注入,用来实现远程方法调用,是实现分布式技术的一种方法.RMI提供了客户辅助对象和服务辅助对象,为客户辅助对象创建了和服务对象相同的方 ...

  9. 初探grunt.js

    package.js { "name": "ttd_v3", "version": "0.1.0", "aut ...

  10. Canvas中点到点的路径运动

    /*随机生成两个点,然后以两点为端点,进行运动,主要使用了SetInterval,对画布进行不断的擦除描绘的操作*/1 <!DOCTYPE html> <html xmlns=&qu ...