道路建设(最小生成树)

道路建设

题目描述

随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易。虽然市长的想法很好,但是他也遇到了一般人也经常头疼的问题,那就是手头的经费有限……

在规划过程中,设计师们已经预算出部分城市之间建设公路的经费需求。现在市长想知道,它能不能将他的m 个城市在有限的经费内实现公路交通。如果可以的话,输出Yes,否则输出No(两个城市不一定要直接的公路相连,间接公路到达也可以。)

输入格式

测试输入包含多条测试数据。

每个测试数据的第 1 行分别给出可用的经费 c,道路数目 n,以及城市数目 m。接下来的 n 行给出建立公路的成本信息,每行给出三个整数,分别是相连的两个城市 v 1 、v 2 以及建设公路所需的成本 h。

输出格式

对每个测试用例,输出 Yes 或 No。

样例输入输出

样例输入#1
 
20 10 5
1 2 6
1 3 3
1 4 4
1 5 5
2 3 7
2 4 7
2 5 8
3 4 6
3 5 9
4 5 2
样例输出#1
 
Yes
样例输入#2
 
10 2 2
1 2 5
1 2 15
样例输出#2
 
Yes

数据范围

对于100%的数据,保证 c<1000000,n<10000, m<100,0<v1,v2≤m,ℎ<100,且两个城市之间可能存在多条线路。

思路

这题的思路很明显是利用最小生成树的思想,首先通过最小生成树算法(我用的prim算法)计算出要花的经费,再与题干中的经费c对比大小,如果比c小就说明有方案Yes,否则就是No。具体实现思路在代码备注中。

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);Long c=scanner.nextLong();int n=scanner.nextInt();int m=scanner.nextInt();int [][]city=new int[m+1][m+1];//地图数组//初始化city,初始都是100,也就是正无穷,不可达for(int i=0;i<m;++i){for(int j=0;j<m;++j){city[i][j]=100;}}//根据输入设置city的初始化值for(int i=0;i<n;++i){//因为题干中是从1开始的,但是数组是从0开始的,所以每个都要-1int x=scanner.nextInt()-1;int y=scanner.nextInt()-1;int h=scanner.nextInt();//因为题干中说了每个城市之间有不同的路线,所以在city数组中只保存最小的路线if(city[x][y]>h){city[x][y]=h;city[y][x]=h;}}//vis表示哪些结点访问过boolean []vis=new boolean[m];//初始只有0结点访问过for (int i=0;i<m;++i){vis[i]=false;}vis[0]=true;//利用prim最小生成树来做,寻找每次的最小权重的值,// 为了防止寻找到的边会组成圈,所以在邻接矩阵中已访问的结点中的边寻找最小边// 并且最小边满足列中对应的结点在vis没有访问过,而行在vis中访问过,按照这样寻找到的最小边就是不会成圈的边for (int i=0;i<m-1;++i){int min=101;int node=m+1;for (int j=0;j<m&&vis[j];++j){for (int k=0;k<m;++k){if(vis[k]) continue;if(min>city[j][k]){min=city[j][k];node=k;}}}// 把寻找到的最小边对应的结点放进vis中vis[node]=true;// 没找到一个最小边就去减经费c,如果最后c大于零说明有方案,否则就没有方案c-=min;}if(c>=0) System.out.println("Yes");else System.out.println("No");}
}

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

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

相关文章

linux printf往文件里面写入内容

printf用于向控制台打印字符串&#xff0c;而这里面的控制台其实是标准输出&#xff0c;fd值为1&#xff0c;故可以用下面代码写文件&#xff1a; int main() {close(1);int i 1;int fd1 open("/chkpnt/log.txt",O_WRONLY | O_CREAT, 0666);printf("i %d\n&…

解密高性能查询!小米亲授:如何轻松查出1000条数据的后十条前7条?

大家好&#xff0c;我是小米&#xff01;今天要跟大家分享一道火辣辣的面试题&#xff1a;在一张表中&#xff0c;如何高性能地查出1000条数据的后十条的前7条&#xff1f;这可是一个考察你数据库查询优化能力的好题目哦&#xff01;废话不多说&#xff0c;让我们直奔主题&…

扩散模型实战(十一):剖析Stable Diffusion Pipeline各个组件

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xff…

uniapp:录音权限检查,录音功能

1.可以使用&#xff1a;plus.navigator.checkPermission检查运行环境的权限 2.如果是"undetermined"表示程序未确定是否可使用此权限&#xff0c;此时调用对应的API时系统会弹出提示框让用户确认&#xff1a;plus.audio.getRecorder() <template><view cla…

深圳锐科达SV-X7 sip话机与海康威视摄像头联动设置方法

深圳锐科达SV-X7 sip话机与海康威视摄像头联动设置方法 SIP对讲终端获取设备IP地址方式 通过长按速拨键3秒&#xff08;上电30秒后&#xff0c;即听到提示音后&#xff09;&#xff0c;待喇叭发出急促嘟嘟声&#xff0c;再快速按一下速拨键&#xff0c;设备自动语音播报本机的…

基于Web停车场管理系统的设计与实现【附源码】

基于Web停车场管理系统的设计与实现 摘要&#xff1a;采用MyEclipse2014平台和Java语言开发了一款基于B/S结构的Web停车场管理系统。系统前台采用JSP技术动态生成Web网页&#xff0c;后台采用MVC开发模式降低代码的耦合度、提高代码的重用性。主要包含了系统信息管理、车位信息…

Transformer——encoder

本文参考了b站的Eve的科学频道中的深入浅出解释Transformer原理和DASOU讲AI中的Transformer从零详解。 入浅出解释Transformer原理 Transformer从零详解 前言&#xff1a; 在自然语言识别中&#xff0c;之前讲过lstm&#xff0c;但是lstm有明显的缺陷&#xff0c;就是当文本过…

Trustzone/TEE/安全 面试100问

关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、 trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CCA视频、学习资料下载、免费学习资…

从传统到智能 | 拓世法宝AI智能直播一体机为商家注入活力

2023年即将结束&#xff0c;直播仍然是商业舞台上的主旋律&#xff0c;本地生活也不例外。据数据显示&#xff0c;到2022年&#xff0c;中国本地生活服务市场规模已经达到29.8万亿元&#xff0c;而预计到2025年&#xff0c;这一数字将继续攀升至35.3万亿元。伴随着当地生活直播…

Arguments对象

Arguments 对象 arguments 基本定义 首先arguments是以内置对象出现的。换句话说&#xff1a;你不能够直接的去访问arguments对象&#xff0c;所以你会返现在浏览器中直接访问arguments对象是不存在的。 特别重要&#xff1a; 那么arguments对象本质上是什么东西呢&#xff…

Java零基础——Spring篇

1.Spring框架的介绍 1.1 传统的项目的架构 在传统的项目中&#xff0c;一般遵循MVC开发模型。 (1) view层与用户进行交互&#xff0c;显示数据或者将数据传输给view层。 (2) 在controller层创建service层对象&#xff0c;调用service层中业务方法。 (3) 在service层创建dao…

yarn启动项目的命令

使用 Yarn 启动项目的命令可以根据项目的配置和需求而有所不同。通常&#xff0c;在一个 Vue CLI 创建的项目中&#xff0c;可以使用以下命令来启动项目&#xff1a; yarn serve上述命令会启动开发服务器&#xff0c;并在开发模式下运行项目。开发服务器会监听文件的变化并重新…

Linux docker安装RStudio Server结合内网穿透实现公网访问内网服务

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构探索 ✅cpolar &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5…

kibana 7安装

手动安装 下载 wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.15-linux-x86_64.tar.gz 解压 mv kibana-7.17.15-linux-x86_64.tar.gz /usr/local tar -zxvf kibana-7.17.15-linux-x86_64.tar.gz chown -R es:es kibana-7.17.15-linux-x86_64修改配置 s…

解决VSCode运行时自动保存问题【图文解析】

用VSCode写前端时老是自动保存&#xff0c;代码还没写完就开始 刷新页面 调用接口 出现报错之类的&#xff0c;很烦人&#xff0c;所以就写一篇修改VSCode自动保存文件的文章&#xff0c;以免自己忘记在哪设置。 同事总是用不自动保存&#xff0c;每次写完都要ctrls一下&#x…

电脑文件夹加密怎么操作?保护数据4个方法分享!

“大家平常是怎么给电脑文件夹加密的呀&#xff1f;我有一些比较重要的数据&#xff0c;为了不让别人看到&#xff0c;我想把它们加密&#xff0c;应该怎么操作呢&#xff1f;” 平常使用电脑时&#xff0c;可能很多朋友会将很多重要的数据保存在电脑上。但是有些文件对用户来说…

私有化敏感词检测API服务wordscheck

之前有网友在找敏感词检测的应用&#xff0c;这个应该能满足他的需求&#xff1b; 什么是 wordscheck &#xff1f; wordscheck 是敏感词检测 API&#xff0c;提供文本识别、智能鉴黄、涉政检测、谩骂等等敏感词检测过滤服务。 简介 敏感词库从大量样本库整理出来&#xff0c;…

bootstarp+springboot基于Java的教学仪器设备商城销售网站_o9b00

1、商品分类功能 商品分类是教学仪器设备销售网站中十分重要的一部分&#xff0c;它能够提高用户在网站上的浏览速度&#xff0c;并方便用户快速找到自己需要的商品。因此&#xff0c;需要对该功能进行分析和设计&#xff0c;确保其体验性、可用性和易用性。可以将商品分为多个…

Apache服务Rwrite功能使用

Rewrite也称为规则重写&#xff0c;主要功能是实现浏览器访问时&#xff0c;URL的跳转。其正则表达式是基于Perl语言。要使用rewrite功能&#xff0c;Apache服务器需要添加rewrite模块。如果使用源码编译安装&#xff0c;–enable-rewrite。有了rewrite模块后&#xff0c;需要在…

驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

参考&#xff1a;https://www.cnblogs.com/sam-snow-v/p/15917898.html eclipse链接SQL Server出现问题 笔者使用Open JDK 17&#xff0c;SQL Server 2016&#xff0c;项目中使用JPA操作数据库。测试环境没问题&#xff0c;生产环境出现如题所示“驱动程序无法通过使用安全套接…