道路拆除的题解

news2025/1/11 10:11:14

目录

原题描述:

题目描述

输入格式

输出格式

样例 #1

样例输入 #1

样例输出 #1

样例 #2

样例输入 #2

样例输出 #2

提示

题目大意:

主要思路:

至于dis怎么求?

代码code:


原题描述:

题目描述

A 国有 n座城市,从 1 \sim n 编号。1 号城市是 A 国的首都。城市间由 m 条双向道路连通,通过每一条道路所花费的时间均为 11 单位时间。

现在 A 国打算拆除一些不实用的道路以减小维护的开支,但 A 国也需要保证主要线路不受影响。因此 A 国希望道路拆除完毕后,利用剩余未被拆除的道路,从 A 国首都出发,能到达 s_1号与 s_2 号城市,且所要花费的最短时间分别不超过 t_1​ 与 t_2​(注意这是两个独立的条件,互相之间没有关联,即不需要先到 s_1​ 再到s_2)。

A 国想请你帮他们算算,在满足上述条件的情况下,他们最多能拆除多少条道路。 若上述条件永远无法满足,则输出 -1

输入格式

第一行两个正整数 n,m,表示城市数与道路数。

接下来 m 行,每行两个正整数 x,y,表示一条连接 x 号点与 y 号点的道路。数据保证没有重边和自环。

最后一行四个整数,分别为  s_1,  t_1s_2 ,t_2,。

输出格式

仅一行一个整数,表示答案。

样例 #1

样例输入 #1

5 6
1 2
2 3
1 3
3 4
4 5
3 5
5 3 4 3

样例输出 #1

3

样例 #2

样例输入 #2

3 2
1 2
2 3
2 2 3 1

样例输出 #2

-1

提示

【数据范围】

对于 30\% 的数据,n,m\le 15

另有 20\% 的数据,n \le 100,m = n-1

另有 30\% 的数据,s_1 = s_2

对于 100\%的数据,2 \le n,m \le 3000,1\le x,y \le n,2 \le s_1,s_2 \le n,0 \le t_1,t_2 \le n

【样例 1 解释】

拆除 (1,2),(2,3),(3,4)三条边。

注意:不需要令首都与除了 s_1,s_2外的点在拆除之后依然连通。

【样例 2 解释】

即使一条边都不拆除,首都到 3 号点的最短时间也都达到了 2 单位时间。

题目大意:

给你一个无向图,问你最少可以去掉多少条边,可以使1到s_1的最短距离<=t_1,使1到s_2的最短距离<=t_2

主要思路:

首先分析一下,如果想最短,那么一定是形如这样的形式。

这样一定是最短的,那么我们就可以用一个dis数组来表示。

dis[3][3010]

dis[0][i]表示,从1走到i的最短路径。

dis[1][i]表示,从s1走到i的最短路径。

dis[2][i]表示,从s2走到i的最短路径。

那么当(dis[0][i]+dis[1][i]+dis[2][i])最小时且dis[0][i]+dis[1][i]<=t1,dis[0][i]+dis[2][i]<=t2。

m-(dis[0][i]+dis[1][i]+dis[2][i])就是答案了。

至于dis怎么求?

由于题目中说过,每条边的时间是1,就是边权为1,既然边权为1,那么可以用bfs求。

代码code:

#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<vector<int>> v(3010);
int dis[10][3010];
int ans=0x3f3f3f3f;
void bfs(int x,int* tmpdis)//由于传数组,用指针
{
	tmpdis[x] = 0;
	queue<pair<int,int>> q;
	q.push({x,0});
	while(!q.empty())
	{
		int u=q.front().first,step=q.front().second;
		q.pop();
		for(auto it:v[u])
		{
			if(tmpdis[it] == 0x3f3f3f3f)
			{
				tmpdis[it] = step+1;
				q.push({it,step+1});
			}
		}
	}
	//是不是很像最短路?
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int u,v1;
		cin>>u>>v1;
		v[u].push_back(v1);
		v[v1].push_back(u);
	}
	int s1,s2,t1,t2;
	cin>>s1>>t1>>s2>>t2;
	memset(dis,0x3f,sizeof(dis));//dis初始化
	bfs(1,dis[0]);
	bfs(s1,dis[1]);
	bfs(s2,dis[2]);
	//求三个dis。
	for(int i=1;i<=n;i++)
	{
		if(dis[0][i]+dis[1][i]<=t1&&dis[0][i]+dis[2][i]<=t2)
		{
			ans = min(ans,dis[0][i]+dis[1][i]+dis[2][i]);//计算
		}
	}
	cout<<(ans == 0x3f3f3f3f?-1:m-ans);//三目运算符,当无答案时,用-1
	return 0;
}


 

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

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

相关文章

我为什么注销了知乎的账号

在谈论这个话题前&#xff0c;大家先看看这篇知乎的讨论&#xff01;回答感觉比较经典&#xff01; 我大概有几年没上知乎了&#xff0c;因为一直感觉知乎上是一群爱讨论假大空理论的群体或者一群无聊的杠精&#xff01;与咱这撸袖子埋头干的人不合拍&#xff01;昨天没事上了一…

出版实务 | 出版物的成本及其构成

文章目录 出版物成本的总体构成直接成本开发成本制作成本 间接成本期间费用 本量利分析原则特点和作用变动成本项目固定成本项目本量利分析的基本公式及其应用定价发行折扣率销售数量单位销售收入销售收入总额单位销售税金销售税金总额变动成本总额单位变动成本固定成本总额单位…

如何对制作好的查询进行编辑和导出?

发布者已经创建好了查询&#xff0c;如发现数据有误&#xff0c;想要进行修改&#xff0c;或者想要将收集好的表格进行导出&#xff0c;应该如何操作&#xff1f;本次就来介绍如何使用此功能。 &#x1f4d6;案例&#xff1a;教师荣誉核对系统 在开启可修改列功能的教师荣誉核对…

IO进程线程day5

1.实现互斥机制 #include <head.h>char buf[128]; //全局数组&#xff0c;临界资源//1、创建一个互斥锁 pthread_mutex_t mutex;//定义分支线程 void *task(void *arg) {while(1){//3、获取锁资源pthread_mutex_lock(&mutex);printf("分支线程中&…

Oracle-探究统计信息收集自动采样AUTO_SAMPLE_SIZE

前言&#xff1a; Oracle数据库进行统计信息收集时&#xff0c;可以通过ESTIMATE_PERCENT参数指定采样方式或者比例&#xff0c;有以下4种指定的方式 1 统计信息收集时不指定值&#xff0c;这时候ESTIMATE_PERCENT值为默认值DBMS_STATS.AUTO_SAMPLE_SIZE&#xff0c;自动采样 …

ApolloCarla联合仿真基本操作

Apollo 系统架构 CANBus&#xff1a;对接车辆的底盘&#xff0c;做一些数据的收发&#xff0c;如油门&#xff0c;方向盘转角 HDMap&#xff1a; 给localization提供定位图层的信息给perception一些车道线、道路拓扑、红绿灯的信息&#xff08;超时空感知&#xff09;&#x…

一台Linux服务jdk1.6 与 jdk1.8 并存,tomcat6+tomcat8 并存

Linux jdk1.6,1.8 tomcat6 tomcat8 并存 需求场景&#xff1a; 有一个项目 原来是 jdk1.6tomcat6 部署的&#xff0c;现在需要进行项目架构升级 项目需要适配jdk1.8 然后用 jdk.8 tomcat 8进行部署&#xff0c;然后下架 jdk1.6 的linux服务 现在有一台 jdk.8 tomcat 8的linu…

【办公软件】手机当电脑摄像头Iriun Webcam软件安装与试用

家里电脑是台式的没有摄像头&#xff0c;但老安卓手机有一台。本来想用小爱摄像头做电脑摄像头&#xff0c;但是发现像素有点差&#xff0c;捣鼓了半天没成功。看网上别人都用旧手机来当电脑摄像头&#xff0c;并且也能使用音频&#xff0c;所以还是用旧手机做摄像头比较香。 …

Java 常见缓存详解以及解决方案

一. 演示Mybatis 一级缓存 首先我们准备一个接口 两个实现的方法&#xff0c; 当我们调用这个queryAll&#xff08;&#xff09;方法时我们需要调用selectAll&#xff08;&#xff09;方法来查询数据 调用此接口实现效果 这个时候我们就可以发现了问题&#xff0c;我们调用方法…

车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 车速预测 | Matlab基于RBF径向基神经网络的车速预测模型&#xff08;多步预测&#xff0c;尾巴图&#xff09; 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复Matlab基于RBF径向基神经网络的车速预测模型…

电脑重装系统有什么好处和坏处?利弊分析

在数字时代&#xff0c;电脑已成为我们日常生活和工作中不可或缺的工具。随着时间的推移&#xff0c;电脑可能会出现各种问题&#xff0c;如运行缓慢、软件冲突、病毒侵入等。此时&#xff0c;许多人会选择重装系统作为解决问题的方法。重装系统既有好处也有坏处。本文将深入探…

GC6109——双通道5V低电压步进电机驱动芯片,低噪声、低振动,应用摄像机,机器人等产品中

GC6109是双通道5V低电压步进电机驱动器&#xff0c;具有低噪声、低振动的特点&#xff0c;特别适用于相机的变焦和对焦系统&#xff0c;万向节和其他精密、低噪声的STM控制系统。该芯片为每个通道集成了256微步驱动器。带SPl接口&#xff0c;用户可以方便地调整驱动器的参数。内…

Java版直播商城:电商源码、小程序、三级分销及 免 费 搭 建 方案

一、技术选型 java开发语言&#xff1a;java是一种跨平台的编程语言&#xff0c;适用于大型企业级应用开发。使用java开发直播商城可以保证系统的稳定性和可扩展性。 spring boot框架&#xff1a;spring boot是一个快速构建spring应用的框架&#xff0c;简化了开发过程&#xf…

Elasticsearch windows开箱即用【记录】

一、准备工作 安装ES之前要在本机安装好JDK&#xff0c;对应的兼容性见官网链接&#xff1a;https://www.elastic.co/cn/support/matrix ES官网链接&#xff1a;https://www.elastic.co/cn/, 我本机安装的是JDK8&#xff0c;测试使用的是7.3.0版本的ES和Kibana。 1、首先去…

【2024最新-python3小白零基础入门】No3.python六大数据类型学习

文章目录 前言一、 Number&#xff08;数字&#xff09;1.1 数字类型分类1.2 数字类型转换1.3 数字运算 二、 String&#xff08;字符串&#xff09;2.1 字符串的创建&#xff1a; 2.2 字符串的基本操作&#xff1a;2.3 字符串常用方法&#xff1a; 三、 List&#xff08;列表&…

Vulnhub靶机:Corrosion 2

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;corrosion:2&#xff08;10.0.2.13&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/c…

Python教程39:使用turtle画美国队长盾牌

---------------turtle源码集合--------------- Python教程36&#xff1a;海龟画图turtle写春联 Python源码35&#xff1a;海龟画图turtle画中国结 Python源码31&#xff1a;海龟画图turtle画七道彩虹 Python源码30&#xff1a;海龟画图turtle画紫色的小熊 Python源码29&a…

大创项目推荐 深度学习手势检测与识别算法 - opencv python

文章目录 0 前言1 实现效果2 技术原理2.1 手部检测2.1.1 基于肤色空间的手势检测方法2.1.2 基于运动的手势检测方法2.1.3 基于边缘的手势检测方法2.1.4 基于模板的手势检测方法2.1.5 基于机器学习的手势检测方法 3 手部识别3.1 SSD网络3.2 数据集3.3 最终改进的网络结构 4 最后…

iOS14 Widget 小组件调研

桌面小组件是iOS14推出的一种新的桌面内容展现形式。 根据苹果的统计数据&#xff0c;“一般用户每天进入主屏幕的次数超过90次”&#xff0c;如果有一个我们应用的小组件在桌面&#xff0c;每天都有超过90次曝光在用户眼前的机会&#xff0c;这绝对是一个顶级的流量入口。 “…

LCD—液晶显示中英文

本节主要介绍以下内容&#xff1a; 字符编码 字模 各种模式的液晶显示字符实验 本节字符编码说明参考网站 字符编码及转换测试&#xff1a;导航菜单 - 千千秀字 Unicode官网&#xff1a;http://www.unicode.org。 一、字符编码 由于计算机只能识别0和1&#xff0c;文字…