HDU 1863 畅通工程(最小生成树,prim)

 

 

题意:

  给出图的边和点数,要求最小生成树的代价,注:有些点之间是不可达的,也就是可能有多个连通图。比如4个点,2条边:1-2,3-4。

 

思路:

  如果不能连通所有的点,就输出‘?’。之前以为每个点只要有边连着就一定能生成树,其实还可以是每个点虽然有边可达,但是给的其实是两个图,比如上例。其他按照常规Prim。

 

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N=105;
 4 const int mod=0x7f7f7f7f;
 5 int v[N][N];    //
 6 int vis[N];
 7 int low[N];     //到每个点的最小权
 8 
 9 
10 int prim(int n)
11 {
12     int pos=vis[1]=1;   //从点1开始
13     for(int i=2; i<=n; i++)   low[i]=v[1][i]; //目前到每个点的最小权
14     int ans=0;
15     for(int i=1; i<n; i++)  //搞定另外n-1个点
16     {
17         int big=mod;
18         for(int j=2; j<=n; j++) //找权最小的边
19         {
20             if(!vis[j] && low[j]<big )  //未浏览过,目前可达,权小
21             {
22                 pos=j;
23                 big=low[j];
24             }
25         }
26         if(big==mod)    return 0;   //无法到达。
27         ans+=big;
28         vis[pos]++; //浏览过
29         for( int j=2; j<=n; j++ )   //更新到每个点的权值
30             if(!vis[j] && v[pos][j]<mod && low[j]>v[pos][j] ) low[j]=v[pos][j];    //未浏览过,有路可达,更短
31     }
32     return ans;
33 }
34 
35 
36 
37 
38 int main()
39 {
40     freopen("input.txt", "r", stdin);
41     int n, m, a, b, t;
42     while(scanf("%d%d", &n, &m), n)
43     {
44 
45         memset(cnt,0,sizeof(cnt));
46         memset(vis,0,sizeof(vis));
47         memset(v,0x7f,sizeof(v));   //置为不可达
48 
49         for(int i=0; i<n; i++)
50         {
51             scanf("%d%d%d",&a,&b,&t);
52             v[a][b]=v[b][a]=t;
53         }
54         int ans=prim(m);
55         if(ans)    printf("%d\n",ans);
56         else  printf("?\n");
57     }
58     return 0;
59 }
AC代码

 

转载于:https://www.cnblogs.com/xcw0754/p/4608439.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaFX 2.0 beta示例应用程序和思考

我有一段时间回过头来玩JavaFX&#xff0c;并且在使用该语言方面有好有坏的经验。 随着JavaFX 2.0 beta的发布&#xff0c;我想尝试一下。 在这里&#xff0c;我开发了一个简单的地址解析应用程序&#xff0c;该应用程序将使用Google地址编码API来获取地址并提供该位置的纬度-经…

解析DBR操作系统引导记录数据

理解文件系统。你必须要熟悉DBR&#xff0c;下面我们就来看看文件系统解析DBR数据。 Dos Boot Record(DBR)操作系统引导记录是由操作系统的格式化程序建立的。在文件系统驱动操作不论什么一个磁盘卷时&#xff0c;这一部分的信息将被读取并作为文件系统在这个磁盘卷上的參数被使…

YouTube Java API入门

在本教程中&#xff0c;我将介绍Google的YouTube API &#xff0c;该API可让您使用YouTube的功能来启用应用程序。 YouTube是“杀手级”互联网应用程序之一&#xff0c;其流量占互联网总流量的很大一部分。 在开始之前&#xff0c;请确保您已阅读《 API概述指南》 。 我们将主…

ServletContext图解

servlet之间共享数据资源&#xff01; 转载于:https://www.cnblogs.com/felixzh/p/4615902.html

Linux自动化安装cobbler

1介绍 1.1 PXE PXE技术与RPL技术不同之处为RPL是静态路由&#xff0c;PXE是动态路由。RPL是根据网卡上的ID号加上其他记录组成的一个Frame&#xff08;帧&#xff09;向服务器发出请求。而服务器中已有这个ID数据&#xff0c;匹配成功则进行远程启动。PXE则是根据服务器端收到的…

Xuggler教程:帧捕获和视频创建

注意&#xff1a;这是我们的“ Xuggler开发教程 ”系列的一部分。 到目前为止&#xff0c;在我们的Xuggler教程系列中&#xff0c;我们已经对视频处理的Xuggler进行了介绍&#xff0c;并讨论了转码和媒体修改 。 在本教程中&#xff0c;我们将看到如何解码视频和捕获帧&#xf…

SignalR + MVC5 简单示例

SignalR MVC5 简单示例 原文:SignalR MVC5 简单示例本文和前一篇文章很类似&#xff0c;只不过是把 SignalR 应用在了 MVC 中 新建项目&#xff0c;选择 MVC 模板 安装 SignalR Install-Package Microsoft.AspNet.SignalR 在项目中添加文件夹 Hubs 在 Hubs 文件夹中添加 Sign…

Hive 接口介绍(Web UI/JDBC)

Hive 接口介绍&#xff08;Web UI/JDBC&#xff09; 实验简介 本次实验学习 Hive 的两种接口&#xff1a;Web UI 以及 JDBC。 一、实验环境说明 1. 环境登录 无需密码自动登录&#xff0c;系统用户名shiyanlou&#xff0c;密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubu…

Java最佳实践– Char到Byte和Byte到Char的转换

在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将讨论String性能调优。 特别是&#xff0c;我们将重点介绍使用默认编码时如何有效地处理字符到字节和字节到字符的转换。 本文总结了两种提议的自定义方法与两种经典方法&#xff0…

Java最佳实践–队列之战和链接的ConcurrentHashMap

在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将在四个具有相关语义的流行Queue实现类之间进行性能比较。 为了使事情变得更现实&#xff0c;我们将在多线程环境下进行测试&#xff0c;以讨论和演示如何将ArrayBlockingQueue &am…

关于使用racthet的push.js

racthet的push是用来跳转另外一个页面的效果的。但是必须在服务器的环境下支持。如果想要让本地html访问支持的话需要添加 转载于:https://www.cnblogs.com/djawh/p/4623925.html

“应用程序无法正常启动(oxc000007b)”解决方案

解决方案1 通过“DirectX修复工具 V3.3 标准版”软件修复。 备注&#xff1a;经过测试&#xff0c;并未解决本人的问题&#xff0c;但是这个方法可能对游戏中缺失相关.dll&#xff08;动态链接库&#xff09;有帮助。 解决方案2&#xff1a; 该问题的出现不适偶然&#xff0c;主…

7-15 计算圆周率 (15 分)

根据下面关系式&#xff0c;求圆周率的值&#xff0c;直到最后一项的值小于给定阈值。 输入格式&#xff1a; 输入在一行中给出小于1的阈值。 输出格式&#xff1a; 在一行中输出满足阈值条件的近似圆周率&#xff0c;输出到小数点后6位。 输入样例&#xff1a; 0.01结尾无…

JUnit学习之hamcrest、testSuite介绍及测试原则

[转自] http://huihai.iteye.com/blog/1994270 上一节说了junit的一些基本概念&#xff0c;主要使用assert做一些基本的判断。但很多时候使用assert做判断&#xff0c;并不方便&#xff0c;如果要判断某几个值是否为true或false&#xff0c;这时使用hamcrest来判断就会方便许多…

Java最佳实践– Vector vs ArrayList vs HashSet

在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将在三个最常用的Collection实现类之间进行性能比较。 为了使事情变得更现实&#xff0c;我们将在多线程环境下进行测试&#xff0c;以讨论和演示如何将Vector &#xff0c; ArrayLi…

Android特效 五种Toast详解

Toast是Android中用来显示显示信息的一种机制&#xff0c;和Dialog不一样的是&#xff0c;Toast是没有焦点的&#xff0c;而且Toast显示的时间有限&#xff0c;过一定的时间就会自动消失。而且Toast主要用于向用户显示提示消息&#xff0c;接下来巴士为大家总结了Android五种To…

Java最佳实践–高性能序列化

在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将讨论并演示如何将对象序列化用于高性能应用程序。 所有讨论的主题均基于用例&#xff0c;这些用例来自于电信行业的关键任务超高性能生产系统的开发。 在阅读本文的每个部分之前…

7-18 二分法求多项式单根 (20 分)

二分法求函数根的原理为&#xff1a;如果连续函数f(x)在区间[a,b]的两个端点取值异号&#xff0c;即f(a)f(b)<0&#xff0c;则它在这个区间内至少存在1个根r&#xff0c;即f0。 二分法的步骤为&#xff1a; 检查区间长度&#xff0c;如果小于给定阈值&#xff0c;则停止&a…

UITableViewCell 选中的状态小技巧

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {[super setSelected:selected animated:animated]; //cell 没被选中时 隐藏这个 _leftImageViewself.leftImageView.hidden !selected; //选中text变红 不然变灰色self.textLabel.textColor selected ? [UICol…

BZOJ 3143 HNOI2013 游走 高斯消元 期望

这道题是我第一次使用高斯消元解决期望类的问题&#xff0c;首发A了&#xff0c;感觉爽爽的.... 不过笔者在做完后发现了一些问题&#xff0c;在原文的后面进行了说明。 中文题目&#xff0c;就不翻大意了&#xff0c;直接给原题&#xff1a; 一个无向连通图&#xff0c;顶点从…