题目描述

 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。

 

输入

 输入包含多组数据,格式如下。

第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n <= 100, m <=10000)
剩下m行每行3个正整数a b c,代表城市a 和城市b之间可以修建一条公路,代价为c。
 

输出

 每组输出占一行,仅输出最小花费。

示例输入

3 2
1 2 1
1 3 1
1 0

示例输出

2
0

提示

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#define INF 0x3f3f3f3f
using namespace std;
int arr[110][110];//记录顶点之间的弧关系;
int dis[110];//用来记录当前生成树到每个节点的距离(权值);
bool vis[110];//标记数组
int prim(int n)//生成最小树,求最小权值;
{
    memset(vis,false,sizeof(vis));//标记数组清零
    for(int i=1;i<=n;i++)
        dis[i]=arr[1][i];;//从1号节点开始生成树
    int ans=0;//距离权值总和
    vis[1]=true;//生成树的根(起点)标记访问过
    for(int i=2;i<=n;i++)//要生成n-1条边,所以循环n-1次
    {
        int pos=i;//用来记录每一次循环找到的结点编号
        int min=INF;;//标记为无穷大
        for(int j=1;j<=n;j++)//对dis数组进行遍历找到距离最小的
            if(vis[j]==false&&dis[j]<min)
        {
            min=dis[j];//更新最小距离
            pos=j;//记录节点编号
        }
        ans+=min;//加上找到的最小权值
        vis[pos]=true;//标记找到的该点被访问
        for(int j=1;j<=n;j++)//更新dis数组
            if(vis[j]==false&&dis[j]>arr[pos][j])//路径通过中间路径pos使路径更小。
              dis[j]=arr[pos][j];//更新生成树到该点的距离
    }
    return ans;
}
int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)//边的初始化;
        {
            if(i==j)
                arr[i][j]=0;
            else
                arr[i][j]=INF;//无穷大;
        }
        for(int i=1,v1,v2,w;i<=m;i++)
        {
            scanf("%d%d%d",&v1,&v2,&w);
            if(arr[v1][v2]>w||arr[v2][v1]>w)//选取权值最小的边;
                arr[v1][v2]=arr[v2][v1]=w;
        }
        printf("%d\n",prim(n));
    }
}

图结构练习——最小生成树相关推荐

  1. SDUT-2144 图结构练习——最小生成树

    图结构练习--最小生成树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description   ...

  2. 一步一步写算法(之图结构)

    原文:一步一步写算法(之图结构) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 图是数据结构里面的重要一章.通过图,我们可以判断两个点之间是 ...

  3. 尤佳轩、何恺明等提出新型图表示法,新视角理解图结构如何影响预测性能

    选自arXiv 作者:尤佳轩.Jure Leskovec.何恺明.Saining Xie 机器之心编译 参与:小舟.杜伟 神经网络的图结构和预测性能之间有怎样的关系?近日,斯坦福尤佳轩.Jure Le ...

  4. 阿尔伯塔大学博士毕业论文:基于图结构的自然语言处理

    本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 机器之心整理 自然语言处理(Natural Language Processing)是人工智能的核心问题之一,旨在让 ...

  5. TensorFlow之图结构与TensorBoard可视化

    TensorFlow之图结构与TensorBoard可视化 1.1 什么是图结构 图包含了一组tf.Operation代表的计算单元对象和tf.Tensor代表的计算单元之间流动的数据. 1.2 图相 ...

  6. ICML2020 | 神经网络的图结构如何影响其预测性能?

    作者 | 董靖鑫 审稿 | 程玉 今天给大家介绍的是来自斯坦福大学的Jure Leskovec课题组发表在ICML2020上的文章" Graph Structure of Neural Ne ...

  7. ICLR2020 | 图池化没有考虑图结构?一文带你了解最新图池化STRUCTPOOL

    今天给大家介绍的是TAMU的Hao Yuan等人的一篇论文,该研究针对目前的大多数图池化技术忽略了图结构这一可能会引起重要特征丢失的信息,巧妙地利用可以捕获不同节点之间的关系的条件随机场,并进一步将能 ...

  8. java流类图结构_java I/O 流总结

    一.java 流操作有关的类和接口: 类                                                                          说明 Fil ...

  9. python函数结构图_Python数据结构与算法之图结构(Graph)实例分析

    本文实例讲述了Python数据结构与算法之图结构(Graph).分享给大家供大家参考,具体如下: 图结构(Graph)--算法学中最强大的框架之一.树结构只是图的一种特殊情况. 如果我们可将自己的工作 ...

最新文章

  1. 在IIS上搭建WebSocket服务器(一)
  2. php单例模式的实例,PHP的单例模式的一个实例_php
  3. 谈题库系统(Samplx)项目之进展
  4. 单人制作游戏手册之五:好看的素材令人心旷神怡!
  5. 使用vue-cli + webpack搭建vue项目环境
  6. .NetCore中三种注入生命周期的思考
  7. POJ 1276 Cash Machine
  8. 前端学习(2363):发送get请求
  9. php$this-conn可以不先定义吗,CodeIgniter 是不是支持PDO 查询?还是本来就不支持
  10. 小心!上万个 Android 和 iOS 应用正在泄露你的数据
  11. 一、CI框架(CodeIgniter)简介
  12. ASP.NET配置设置-关于web.config各节点的讲解
  13. 从源码编译安装TensorFlow
  14. 数据库在什么情况下适合添加索引
  15. JAVA 函数的重载
  16. 高数复习笔记(同济 第七版 上下册)
  17. 【数学建模】基于matlab银行多机排队论模型【含Matlab源码 1096期】
  18. php判断百度来路,判断是否通过百度搜索进入你的网站 - 小俊学习网
  19. 第十四课 k8s源码学习和二次开发原理篇-调度器原理
  20. 小程序官网CMS开源项目出炉,Weixin-App-CMS 1.0 版本正式发布

热门文章

  1. .net core 调用c dll_Qt编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)
  2. 弹出键盘布局上移_评测 | 别买了HHKB键盘不知道这些新功能!
  3. php源码怎样安装mysql_安装MySQL
  4. python 获取昨天的日期_利用Python来实现报表的自动发送,解放你时间去做更有意思的事情...
  5. python定位元素在列表中的位置_python定位列表元素
  6. 【LeetCode笔记】279. 完全平方数(Java、动态规划)
  7. python命令行解析_python命令行解析函数
  8. 华为服务器sn号查询网站,linux 查询服务器sn
  9. java如何获得wlan mac_Android M 如何获取 Wifi MAC地址
  10. 线性规划图解法求最优解_高中数学:简单的线性规划问题