洛谷 P1346电车

news2024/10/6 0:28:26

题目来源于:洛谷

解题思路:

可以把一个路口看作一张图中的一个点,轨道是图中的边(注意:这是有向图),每一条边的权值就是这个边所联通的点是否需要按按钮(需要按按钮就是1,不需要按按钮就是0)然后就用求最短路径的算法算出最少需要按的开关数。 

使用Floyed算法,Floyed算法模板如下:
 

for(int k=1;k<=n;k++){		//k相当于阶段
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);	//松弛操作
            //三角形两边之和大于第三边
		}
	}
}

 两种代码。

1:

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
const int N=100005;
const int M=1005;
int n, s, e, m, x, f[M][M], dis[N];
bool vis[N]; 
int main(){
	memset(f,INF,sizeof(f)); 
	memset(dis,INF,sizeof(dis)); 
	scanf("%d %d %d",&n,&s,&e);
	for(int i=1;i<=n;i++){
		f[i][i]=0;
	}
	for(int i=1;i<=n;i++){
		scanf("%d",&m);
		for(int j=1;j<=m;j++){
			scanf("%d",&x);
			if(j==1){
				f[i][x]=0;
			}
			else{
				f[i][x]=1;
			}
		}
	}
	for(int i=1;i<=n;i++){
		dis[i]=f[s][i];
	}
	dis[s]=0;
	for(int i=1;i<=n;i++){
		int minn=INF; 
		int k=0; 
		for(int j=1;j<=n;j++){
			if(!vis[j]&&dis[j]<minn){
				minn=dis[j];
				k=j;
			}
		}
		if(!k){
			break;
		}
		vis[k]=true; 
		for(int j=1;j<=n;j++){
			if(!vis[j]&&dis[j]>dis[k]+f[k][j]){
				dis[j]=dis[k]+f[k][j]; 
			}
		}
	}
	if(dis[e]==INF){
		printf("-1");
	}
	else{
		printf("%d",dis[e]);
	}
	return 0;
}

2.

 

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f 
using namespace std;
int n,s,e,m,x,f[1001][1001];//f[i][j]表示从i到j的长度 
void floy(){	//floyed模板
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(!(i==j || i==k || j==k)){	//i不能等于j,j不能等于k,i不能等于k 
					f[i][j]=min(f[i][k]+f[k][j],f[i][j]);//取最小值 
				}
			}
		}
	}
}
int main(){
	memset(f,INF,sizeof(f));//初始化f 
	scanf("%d %d %d",&n,&s,&e);
	for(int i=1;i<=n;i++){//自己到自己不用按开关 
		f[i][i] = 0;
	}
	for(int i=1;i<=n;i++){
		scanf("%d", &m);
		for(int j=1;j<=m;j++){
			scanf("%d", &x);
			if(j==1){//第一个赋值为0 
				f[i][x]=0;
			}
			else{
				f[i][x]=1;
			}
		}
	}
	floy();
	if(f[s][e]==INF){
		printf("-1");
	}
	else{
		printf("%d",f[s][e]);
	}
	return 0;
}

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

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

相关文章

Ubuntu24.04安装tabby-terminal-1.0.207并处理依赖

1 下载 tabby-terminal-1.0.207 地址&#xff1a; https://github.com/Eugeny/tabby/releases 点击show all 36 assets 选择 tabby-1.0.207-linux-x64.deb 并下载。 2 依赖下载 gconf2_3.2.6-3ubuntu6_amd64.deb gconf2-common_3.2.6-3ubuntu6_all.deb gconf-service_3.2.6-…

如何实现倾斜摄影三维模型OSGB格式轻量化

如何实现倾斜摄影三维模型OSGB格式轻量化 倾斜摄影三维模型以其高精度和真实感受在城市规划、建筑设计和虚拟漫游等领域发挥着重要作用。然而&#xff0c;由于其庞大的数据量和复杂的几何结构&#xff0c;给数据存储、传输和可视化带来了挑战。为了解决这个问题&#xff0c;倾斜…

机器学习实验----逻辑回归实现二分类

目录 一、介绍 二、sigmoid函数 &#xff08;1&#xff09;公式&#xff1a; &#xff08;2&#xff09;sigmoid函数的输入 预测函数&#xff1a; 以下是sigmoid函数代码&#xff1a; 三、梯度上升 &#xff08;1&#xff09;似然函数 公式&#xff1a; 概念&#xff…

Android存储系统成长记

用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章 本文概要 您一定使用过Context的getFileStreamPath方法或者Environment的getExternalStoragePublicDirectory方法&#xff0c;甚至还有别的方法把数据存储到文件中&#xff0c;这些都是存储系统提供的服务&#x…

【代码随想录——回溯算法——三周目】

1. 子集2 这题需要先进行排序&#xff0c;和候选人那题类似。防止出现重复的子集。 func subsetsWithDup(nums []int) [][]int {path : make([]int, 0)res : make([][]int, 0)sort.Ints(nums)var dfs func(nums []int, start int)dfs func(nums []int, start int) {res app…

08Django项目--用户管理系统--查(前后端)

对应视频链接点击直达 TOC 一些朋友加我Q反馈&#xff0c;希望有每个阶段的完整项目代码&#xff0c;那从今天开始&#xff0c;我会上传完整的项目代码。 用户管理&#xff0c;简而言之就是用户的增删改查。 08项目点击下载&#xff0c;可直接运行&#xff08;含数据库&…

1967python多媒体素材管理系统mysql数据库Django结构layUI布局计算机软件工程网页

一、源码特点 python Django多媒体素材管理系统是一套完善的web设计系统mysql数据库 &#xff0c;对理解python编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 开发环境pycharm mysql 5.0 到5.5 依赖包 Dj…

推荐丨 IP地址如何申请SSL证书实现https

为IP地址申请SSL证书可以让用户通过HTTPS协议安全地访问直接绑定到IP地址的网站或服务。以下是申请IP地址SSL证书的一般步骤&#xff1a; 1 选择支持IP证书的CA&#xff1a;直接为IP地址颁发SSL/TLS证书并不常见&#xff0c;国内厂商JoySSL有提供IP证书&#xff0c;登录其官网…

东莞MES管理系统在电子工厂的益处

东莞MES管理系统对东莞电子企业带来了许多好处&#xff0c;包括但不限于以下几点&#xff1a; 提高生产效率&#xff1a;MES系统可以优化生产计划、监控生产过程&#xff0c;提高生产效率&#xff0c;减少生产中的浪费和停机时间&#xff0c;提高产能利用率。 优化库存管理&a…

R可视化:另类的柱状图

介绍 方格状态的柱状图 加载R包 knitr::opts_chunk$set(echo TRUE, message FALSE, warning FALSE) library(patternplot) library(png) library(ggplot2) library(gridExtra)rm(list ls()) options(stringsAsFactors F)导入数据 data <- read.csv(system.file(&qu…

M00238-固定翼无人机集群飞行仿真平台MATLAB完整代码含效果

一个小型无人机集群仿真演示平台&#xff0c;使用matlab和simulink搭建。 给出的例子是5架的&#xff0c;当然如果你愿意花时间&#xff0c;也可以把它扩展到10架&#xff0c;20架甚至更多。 输入&#xff1a;5架飞机的规划路径 输出&#xff1a;每架无人机每个时刻的13个状态量…

如何将天猫内容保存为PDF格式?详细步骤与实战解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;保存天猫内容的重要性 二、环境准备与工具安装 1. 安装必要的Python包…

2024年电工杯高校数学建模竞赛(B题) 建模解析| 大学生平衡膳食食谱的优化设计

问题重述及方法概述 问题1&#xff1a;膳食食谱的营养分析评价及调整 数学方法&#xff1a;线性规划模型、营养素评价模型、比较分析 可视化数据图&#xff1a;营养素含量表、营养素摄入量对比图、营养素缺乏情况图 问题2&#xff1a;基于附件3的日平衡膳食食谱的优化设计 数…

idea 中配置 Java 注释模板

引言&#xff1a; 在软件工程中&#xff0c;良好的代码注释习惯对于项目的可维护性和可读性至关重要。IntelliJ IDEA&#xff0c;作为一款强大的Java开发IDE&#xff0c;提供了灵活的注释模板配置功能&#xff0c;帮助开发者快速生成规范的代码注释。本文将详细介绍如何在Inte…

2024年上半年信息系统项目管理师下午真题及答案(第二批)

试题一 某项目计划工期为10个月&#xff0c;预算210万元&#xff0c;第7个月结束时&#xff0c;项目经理进行了绩效评估&#xff0c;发现实际完成了总计划进度的70%。项目的实际数据如表所示&#xff1a; 单击下面头像图片领取更多软考独家资料

【Ambari】Docker 安装Ambari 大数据单机版本

目录 一、前期准备 1.1 部署 docker 1.2 部署 docker-compose 1.3 版本说明 二 、镜像构建启动 2.1 系统镜像构建 2.2 安装包源镜像构建 2.3 kdc镜像构建 2.4 集群安装 2.5 容器导出为镜像 三、Ubuntu环境安装测试 3.1 环境准备 3.2 集群容器启动 一、前期准备 1.…

【C++题解】1125. 删除字符串中间的*

问题&#xff1a;1125. 删除字符串中间的* 类型&#xff1a;字符串 题目描述&#xff1a; 输入一个字符串&#xff0c;将串前和串后的*保留&#xff0c;而将中间的 * 删除。 输入&#xff1a; 一个含*的字符串。 输出&#xff1a; 删除了串中的*的字符串。 样例&#xf…

夏日防晒笔记

1 防晒霜 使用方法&#xff1a;使用前上下摇晃瓶身4至5次&#xff0c;在距离肌肤10至15cm处均匀喷上。如在面部使用&#xff0c;请先喷在掌心再均匀涂抹于面部。排汗量较多时或擦拭肌肤后&#xff0c;请重复涂抹以确保防晒效果。卸除时使用普通洁肤产品洗净即可。

C++:STL容器的学习-->string

C:STL容器的学习-->string 1. 构造方法2. string的赋值操作3. string字符串的拼接4. string 查找和替换5. string字符串的比较6. string字符存取7. string 插入和删除8. string截取 需要添加头文件#include <string> 1. 构造方法 string() 创建空的字符串 string(c…

kafka3.6.1版本学习

kafka目录结构 bin linux系统下可执行脚本文件 bin/windows windows系统下可执行脚本文件 config 配置文件 libs 依赖类库 licenses 许可信息 site-docs 文档 logs 服务日志 启动ZooKeeper 进入Kafka解压缩文件夹的config目录&#xff0c;修改zookeeper.properties配置文件 #t…