蓝桥杯打卡第14天

news2024/12/23 15:20:45


文章目录

  • 最短路径
  • 最短路径

一、最短路径OJ链接

本题思路:本题是一道简单 的图论题,用floyd算法还是比较简单的,因为代码很短,这里需要用一个backup用来保存未删除边时的情况。当走完一次floyd之后,拷贝给dist数组来进行删除边的处理。当然不拷贝回去直接用这个backup数组也是可以进行删边处理的。

#include<bits/stdc++.h>

typedef std::pair<int, int> PII;

using namespace std;

constexpr int INF=0x3f3f3f3f;
constexpr int N=55,M=2500;

int n,m,k;
int dist[N][N],backup[N][N];//这里backup作用就是保留一开始每条边的长度
PII q[M];//利用数组来保存边的顺序

//floyd初始化
void init()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(i==j) dist[i][j]=0;
            else dist[i][j]=INF;
}

//floyd算法
void floyd()
{
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);
}

int main()
{
  int T;
  std::cin>>T;
  while(T--){
    cin>>n>>m>>k;
    
    init();
    for(int i=1;i<=m;i++){
    int x,y,z;
    cin>>x>>y>>z;
    dist[x][y]=dist[y][x]=min(dist[x][y],z);
    q[i]={x,y};
    }
    
    memcpy(backup,dist,sizeof dist);
  
    floyd();
      
    if(dist[1][n]>INF/2) cout<<"-1"<<endl;
    else cout<<dist[1][n]<<endl;
    
    memcpy(dist,backup,sizeof backup);//删除后再走一遍floyd
    for(int i=1;i<=k;i++){
      int x;
      std::cin>>x;
      int a=q[x].first,b=q[x].second;//将对应的边置为无穷大
      dist[a][b]=dist[b][a]=INF;
    }
    
    floyd();
      
    if(dist[1][n]>INF/2) cout<<"-1"<<endl;
    else cout<<dist[1][n]<<endl;
  }
  
  return 0;
}

二、最短路径OJ链接

本题思路:本题是一道综合比较强的题目,利用并查集来判断当前边是否与前面是否已经联通,如果不连通的话,则需要加入该边。这里可以推导一下:

最短路是从2^0到2^k,所以从0到n的和为 2^n - 1, 对于前n - 1项和2^(n - 1) - 1 < 2^n 恒成立, 所以只要在连通的路径一定比后联通的边要短。

#include <bits/stdc++.h>

typedef long long LL;

constexpr int N=110,mod=100000,INF=0x3f3f3f3f;

int n,m;
int dist[N][N];
int p[N];

LL qmi(int a,int b)//利用快速幂来求2^k次
{
  LL res=1;
  while(b){
    if(b&1) res=(LL)res*a%mod;
    a=(LL)a*a%mod;
    b>>=1;
  }
  return res;
}

//floyd算法
void floyd()
{
  for(int k=0;k<n;k++)
    for(int i=0;i<n;i++)
      for(int j=0;j<n;j++)
        dist[i][j]=std::min(dist[i][j],dist[i][k]+dist[k][j]);
}

/*
并查集对判断是否在前面的循环实现连通
*/
//并查集
int find(int x)
{
  if(p[x]!=x) p[x]=find(p[x]);
  return p[x];
}

int main()
{
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);std::cout.tie(nullptr);
  
  memset(dist,0x3f,sizeof dist);
  std::cin>>n>>m;
  
  for(int i=0;i<n;i++) p[i]=i;
  
  for(int i=0;i<m;i++){
    LL len=qmi(2,i);//边的距离
    
    int a,b;
    std::cin>>a>>b;
    if(find(a)!=find(b))
    {
      p[find(a)]=find(b);
      dist[a][b]=dist[b][a]=len;
    }
  }
  
  floyd();
  for(int i=1;i<n;i++){
    if(dist[0][i]>INF/2) std::cout<<"-1"<<std::endl;
    else std::cout<<dist[0][i]%mod<<std::endl;
  }
  
  return 0;
}

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

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

相关文章

轻松搞定Spring集成缓存,让你的应用程序飞起来!

Spring集成缓存 缓存接口开启注解缓存注解使用CacheableCachePutCacheEvictCachingCacheConfig 缓存存储使用 ConcurrentHashMap 作为缓存使用 Ehcache 作为缓存使用 Caffeine 作为缓存 主页传送门&#xff1a;&#x1f4c0; 传送 Spring 提供了对缓存的支持&#xff0c;允许你…

威联通NAS安装Openwrt旁路由教程

Hello大家好&#xff0c;有一段时间没有折腾NAS了 &#xff0c;最近搞了一台威联通的TS-464C2&#xff0c;平时用来存储一下数据什么的&#xff0c;感觉有点浪费&#xff0c;刚好威联通自带有虚拟机的软件&#xff0c;直接拿来装个软路系统岂不是美滋滋。 首先说一下这个机器…

Python经典练习题(一)

文章目录 &#x1f340;第一题&#x1f340;第二题&#x1f340;第三题&#x1f340;第四题&#x1f340;第五题 &#x1f340;第一题 有四个数字&#xff1a;1、2、3、4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&#xff1f; 这里我们使用…

【湖科大教书匠】计算机网络随堂笔记第1章(计算机网络概述)

目录 1.1、计算机网络在信息时代的作用 我国互联网发展状况 1.2、因特网概述 1、网络、互连网&#xff08;互联网&#xff09;和因特网 2、因特网发展的三个阶段 因特网服务提供者ISP(Internet Service Provider) 基于ISP的三层结构的因特网 3、因特网的标准化工作 4、因特网的…

基于PHP语言研发的抖音矩阵系统源代码开发部署技术文档分享

一、概述 本技术文档旨在介绍抖音SEO矩阵系统源代码的开发部署流程&#xff0c;以便开发者能够高效地开发、测试和部署基于PHP语言的开源系统。通过本文档的指引&#xff0c;您将能够掌握抖音SEO矩阵系统的开发环境和部署方案&#xff0c;从而快速地构建出稳定、可靠的短视频S…

如何解决 Spring Boot Actuator 的未授权访问漏洞

Spring Boot Actuator 的作用是提供了一组管理和监控端点&#xff0c;允许你查看应用程序的运行时信息&#xff0c;例如健康状态、应用程序信息、性能指标等。这些端点对于开发、测试 和运维团队来说都非常有用&#xff0c;可以帮助快速诊断问题、监控应用程序的性能&#xff0…

红 黑 树

文章目录 一、红黑树的概念二、红黑树的实现1. 红黑树的存储结构2. 红黑树的插入 一、红黑树的概念 在 AVL 树中删除一个结点&#xff0c;旋转可能要持续到根结点&#xff0c;此时效率较低 红黑树也是一种二叉搜索树&#xff0c;通过在每个结点中增加一个位置来存储红色或黑色…

软件测试缺陷报告详解

【软件测试行业现状】2023年了你还敢学软件测试&#xff1f;未来已寄..测试人该何去何从&#xff1f;【自动化测试、测试开发、性能测试】 缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report&#xff08;SBR&#xff09;或软件问题报告Software Pr…

【开发篇】二、属性绑定与校验

文章目录 1、ConfigurationProperties自定义Bean属性绑定2、EnableConfigurationProperties注解3、ConfigurationProperties第三方Bean属性绑定4、松散绑定5、常用计量单位6、数据校验7、yaml绑定值的坑--关于进制 1、ConfigurationProperties自定义Bean属性绑定 前面读取yaml…

gateway之过滤器(Filter)详解

文章目录 什么是过滤器过滤器的种类局部过滤器代码示例全局过滤器代码示例 总结 什么是过滤器 在Spring Cloud中&#xff0c;过滤器&#xff08;Filter&#xff09;是一种关键的组件&#xff0c;用于在微服务架构中处理和转换传入请求以及传出响应。过滤器位于服务网关或代理中…

CRM客户管理系统主要用途

对于大多数企业而言业绩就是生命线&#xff0c;因此销售环节在企业管理过程中意义重大。面对愈发内卷的市场竞争企业就要借助CRM销售管理系统改善各个环节存在的漏洞&#xff0c;占据优势。那么&#xff0c;销售管理系统的用途有哪些&#xff0c;接下来我们从下面3个功能来介绍…

ESP32-IDF使用I2S驱动MAX98375--解析WAV文件

一. 简介 本篇文章将介绍如何使用ESP32S3通过I2S发送WAV音频数据&#xff0c;驱动MAX98375A进行音频的播放。是EVE_V2项目开发的一部分工作。 二. MAX98375A介绍 芯片特性如下&#xff0c;可以在芯片手册上找到。 单电源工作(2.5V至5.5V)3.2W输出功率&#xff1a;4Ω&#…

anaconda安装完成之后输入conda -V没有反应

anaconda安装完成后&#xff0c;conda没有反应 vim ~/.bashrc后面添加内容 # added by Anaconda3 5.3.0 installer # >>> conda init >>> # !! Contents within this block are managed by conda init !! __conda_setup"$(CONDA_REPORT_ERRORSfalse /u…

springboot实战(七)之jackson配置前后端交互下划线转驼峰对象序列化与反序列化

目录 环境&#xff1a; 1.驼峰转下划线配置 1.1单个字段命名转化使用JsonProperty注解 1.2单个类进行命名转化使用JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)注解 3.全局命名策略配置 2. 序列化以及反序列化 2.1序列化 2.2反序列化 3.自定义序列…

ImageJ查看图像灰度值矩阵及像素编号从0开始

ImageJ查看图像灰度值矩阵 imagej打开一幅图像 然后image —— transform——image to results&#xff0c;等一下就会出现灰度值矩阵 我读取的如下&#xff0c;可以看出&#xff0c;imagej对像素的编号是从0开始的&#xff0c;切记&#xff01;&#xff01;&#xff01;跟C/…

【论文笔记】Scene as Occupancy

原文链接&#xff1a;https://arxiv.org/abs/2306.02851 1. 引言 与传统的3D框物体表达相比&#xff0c;使用3D占用表达是几何感知的&#xff0c;因为3D框表达简化了物体的形状。此外&#xff0c;现有基于视觉的方法很少考虑时间信息&#xff1b;单阶段方法缺少从粗到细的细化…

Linux 线程(thread)

进程线程区别 创建线程 #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); -功能&#xff1a;创建一个子线程&#xff0c;一般情况下main函数所在的线程称为主线程&#xff0c;…

科技资讯|Canalys发布全球可穿戴腕带设备报告,智能可穿戴增长将持续

市场调查机构 Canalys 近日发布报告&#xff0c;表示 2023 年第 2 季度全球可穿戴腕带设备出货量达 4400 万台&#xff0c;同比增长了 6%。 主要归功于其亲民的价格以及消费者对价位较高的替代品仍持谨慎态度&#xff0c;基础手环市场尽管与去年同期相比有所下降&#xff0c;…

JDBC连接mysql

文章目录 JDBC简介JDBC-MYSQL驱动下载JDBC使用通过结果集查询 PreparedStatement 预处理查询事务批处理连接池1.C3P02.德鲁伊 druid DBUtils工具 JDBC简介 JDBC(Java Data Connectivity,java数据库连接)是一种用于执行sql语句的JavaAPI&#xff0c;可以为多种关系数据库提供统…

极简式看图软件 Pixea Plus for Mac

Pixea Plus for Mac介绍 简单易用&#xff1a;Pixea的用户界面非常简洁直观&#xff0c;容易上手。 图片管理&#xff1a;Pixea允许用户创建个人或业务相册&#xff0c;并提供了图片搜索、排序、过滤等多种管理功能&#xff0c;方便用户组织和查找照片。 图片编辑&#xff1…