还是畅通工程(水题) kruskal算法

2023-11-14

http://acm.hdu.edu.cn/showproblem.php?pid=1233


Problem Description

某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
 
Input

测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
 
Output
对每个测试用例,在1行里输出最小的公路总长度。
 
Sample Input

3  
1 2 1  
1 3 2  
2 3 4  
4  
1 2 1  
1 3 4  
1 4 1  
2 3 3  
2 4 2  
3 4 5
0


 
Sample Output

3

Source
浙大计算机研究生复试上机考试-2006年

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

分析:其实这是一道水题,最小生成树的半道题。用克鲁斯卡尔解决。

Accepted 1233 265MS 312K 945 B G++ 瑾予

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
 int u,v,cost;
}e[5000];
int cmp(const node&a,const node&b)//排序
{
 return a.cost<b.cost;
}
int set[5000];
int find(int x)//路径压缩
{
 if(x!=set[x])
  set[x]=find(set[x]);
 return set[x];
}

void merge(int x,int y)
{
 int fx,fy;
 fx=find(x);
 fy=find(y);
 if(fx==fy)
  return;
 if(fx<fy)
    set[fy]=fx;
 else
    set[fx]=fy;
}
int main()
{
 int n,i,h;
 while(scanf("%d",&h),h)
 {
  for(i=0;i<h;i++)
   set[i]=i;
  n=h*(h-1)/2;
  for(i=0;i<n;i++)
  {
   scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].cost);
  }
  sort(e,e+n,cmp);
  /*for(i=0;i<n;i++)
   printf("%d %d %d\n",e[i].u,e[i].v,e[i].cost);*/
  int fx,fy,sum=0;
  for(i=0;i<n;i++)
  {
   fx=find(e[i].u);
   fy=find(e[i].v);
   if(fx!=fy)//作用:判重边。
   {
    merge(e[i].u,e[i].v);
    sum+=e[i].cost;
   }
  }
  printf("%d\n",sum);
 }
 return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

还是畅通工程(水题) kruskal算法 的相关文章

随机推荐

  • 密码学-hash加密

    以下代码分别为乘法hash sha256 md5 ripemd160的使用方法 package main import fmt crypto sha256 os io crypto md5 encoding hex golang org x
  • String的trim方法

    不能理解成只是去除两端空格 t n v f r x0085 x00a0 u2028 u2029 翻译过来分别是 水平制表符 换行符 垂直制表符 换页符 回车 后面的这几个除了问号外 其他的都是转义符形式写法 并且Trim方法执行删除的过程是
  • WebGL中图片多级处理(FrameBuffer)

    在webgl的使用过程中 我们通常会想对texture进行多级处理并对其贴在表面显示 如对较精准的边缘检测 要先后使用灰度shader 模糊shader 边缘shader来进行处理 而每次的处理对象则是上一次处理后的texture 这就要对
  • 2023.08.17sigprocmask用法解析

    实例一 配合signalfd使用 include head h include
  • 车联网项目学习笔记

    学习目标 了解车联网大数据行业 了解车联网项目系统架构 理解车联网数据量计算方法 掌握json数据解析 掌握复杂json解析方法 能掌握的技能 1 车联网领域大数据系统设计与开发 2 车联网业务类型与指标设计 3 实时数据ETL开发 4 实
  • 个人博客全新UI:我心中你最美

    专注前端与算法的系列干货分享 欢迎关注 微信公众号 心谭博客 xin tan com GitHub 1 前世 从 2018 年 1 月份开始 因为喜欢记录 分享 还想认识更多有趣的人 我开始着手搭建自己的个人网站 最初版本的小站的 UI 设
  • uniapp定义全局变量或方法

    uniapp定义全局变量或方法请注意 Vue 上挂载属性的方式只支持vue页面 不能在 nvue页面中使用 https ask dcloud net cn article 35021
  • uniapp小程序使用web-view承载的html页面是uniapp H5时,H5与小程序通讯

    最近在小程序项目用到web view 需要web view承载的H5和小程序通讯 碰到个大坑 所以写一下实现过程及怎么避坑 一 小程序向web view承载的H5传递参数 直接在url后接参数即可 xxxxx com 二 H5向小程序发送消
  • 如何快速学习Python编程?从零基础到精通的Python学习路线(附教程)值得珍藏

    首先 我们先普及一下编程语言的基础知识 其实无论用任何编程语言来开发程序 都是为了让计算机干活 比如编写一篇文章 下载一首MP3等 而计算机干活的CPU只认识机器的指令 所以 尽管不同的编程语言差异极大 最后都得 翻译 成CPU可以执行的机
  • 2个月的学习总结

    从7月20日学习到现在 在这两个月里老师讲解的知识点是我在学校里学到的两倍还要多 从Java基础到Java高级 前端知识 数据库知识 以及现在我们所学的框架 都在我所触及到的知识里形成了一个具体的框架 如果说现在所学的框架是建设房子的外观和
  • 如何在ubuntu系统使用微信?

    可以使用微信官方提供的Linux版本在Ubuntu系统上使用微信 步骤如下 前往微信官方网站下载Linux版本的微信 https www wechat com zh CN download 下载完成后 打开终端 使用cd命令进入到下载文件所
  • 聚类算法OPTICS的理解及实现

    前言 前面给大家介绍到了聚类算法中比较经典的 DBSCAN 算法 对于数据量小而且相对比较密集 密度相似的数据集来说 是比较合适的 那么接下来给大家介绍它的改进版 OPTICS Ordering points to identify the
  • 反调试-动态代码分析

    反调试 动态代码分析 1 动态解析代码 许多编程语言都允许动态解析源代码指令 这使得程序可以执行基于用户输入的动态指令 若不经过适当的验证 程序会错误地认为由用户直接提供的指令仅会执行一些无害的操作 会正常解析并执行该指令 远程用户可以提供
  • 张校捷《深度强化学习算法与实践:基于PyTorch的实践》

    在过去的几年里 人工智能 AI 领域取得了令人瞩目的进展 从无人驾驶汽车到 ChatGPT 再诸如围棋 Algha Go 和象棋等棋类游戏中击败世界级选手 这些突破背后的关键技术便是深度强化学习 Deep Reinforcement Lea
  • aspx调试的时候其他机器也可以打开_ABB、KUKA、FANUC、安川四大家族机器人安全回路小结...

    很多新人在机器人安装调试的时候不知道如何下手 在此个人分享一下机器人安装调试的流程如下 一个机器人项目的安装调试是否能顺利的通过客户验收 机器人的安全回路非常重要 在此分享下ABB KUKA FANUC 安川 四大家族机器人安全回路小结如下
  • 漏极开路门详解(Open Drain, OD)定义 提示 上拉电阻对OD门动态性能的影响

    定义 指CMOS门电路的输出只有NMOS管 并且它的漏极是开路的 提示 由于OD门不能输出高电平 只能输出低电平 所以在使用OD门时必须在漏极和电源VDD间接一个上拉电阻 上拉电阻对OD门动态性能的影响 当其他门电路作为OD门的负载时 OD
  • 动态规划算法(2)最长回文子串详解

    文章目录 最长回文字串 动态规划 代码示例 前篇 1 初识动态规划 最长回文字串 传送门 https leetcode cn problems longest palindromic substring description 给你一个字符
  • PopupMenuView

    PopupMenuView 项目地址 kareluo PopupMenuView 简介 A view just like UIMenuController of iOS 一个类似 iOS 中弹框气泡菜单的控件 更多 作者 提 Bug 标签
  • 开心档-软件开发入门之Bootstrap4 按钮

    Bootstrap4 按钮 Bootstrap 4 提供了不同样式的按钮 实例
  • 还是畅通工程(水题) kruskal算法

    http acm hdu edu cn showproblem php pid 1233 Problem Description 某省调查乡村交通状况 得到的统计表中列出了任意两村庄间的距离 省政府 畅通工程 的目标是使全省任何两个村庄间都