数据结构与算法题目集|7-8 哈利·波特的考试 c++满分题解

哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。

现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。于是他来问你:带什么动物去可以让最难变的那种动物(即该动物变为哈利·波特自己带去的动物所需要的魔咒最长)需要的魔咒最短?例如:如果只有猫、鼠、鱼,则显然哈利·波特应该带鼠去,因为鼠变成另外两种动物都只需要念4个字符;而如果带猫去,则至少需要念6个字符才能把猫变成鱼;同理,带鱼去也不是最好的选择。

输入格式:

输入说明:输入第1行给出两个正整数N (≤100)和M,其中N是考试涉及的动物总数,M是用于直接变形的魔咒条数。为简单起见,我们将动物按1~N编号。随后M行,每行给出了3个正整数,分别是两种动物的编号、以及它们之间变形需要的魔咒的长度(≤100),数字之间用空格分隔。

输出格式:

输出哈利·波特应该带去考场的动物的编号、以及最长的变形魔咒的长度,中间以空格分隔。如果只带1只动物是不可能完成所有变形要求的,则输出0。如果有若干只动物都可以备选,则输出编号最小的那只。

输入样例:

6 11
3 4 70
1 2 1
5 4 50
2 6 50
5 6 60
1 3 70
4 6 60
3 6 80
5 1 100
2 4 60
5 2 80

输出样例:

4 70

dijkstra算法的应用,本质上是计算最短路径问题,第一个测试点一遍过,后面的无解和输出最小编号的动物分别采用了设flag检测有没有无穷大的距离以及相同最短距离判断是否为编号最小来实现,总的来讲只要对dijkstra算法熟悉这题难度不大,并没有变种

#include <iostream>
#include <vector>
#include <queue>
#include <unordered_map>
#include <climits>
using namespace std;
typedef pair<int, int> pii; // first表示距离,second表示节点索引// Dijkstra算法
// 接受一个图,一个起始节点和一个存储节点的映射
void dijkstra(unordered_map<int, unordered_map<int, int>>& graph, int start, unordered_map<int, int>& distances) {priority_queue<pii, vector<pii>, greater<pii>> pq; // 构建Dijkstra算法的优先队列pq.push({0, start});distances[start] = 0;while (!pq.empty()) {int dist = pq.top().first;int index = pq.top().second;pq.pop();if (dist > distances[index]) continue; // 如果当前节点距离大于已知距离,则跳过节点for (auto it = graph[index].begin(); it != graph[index].end(); it++) // 遍历所有邻居{int next_index = it->first;int weight = it->second;int next_dist = dist + weight; // 计算当前节点到这一邻居节点的新距离if (next_dist < distances[next_index]) {distances[next_index] = next_dist;pq.push({next_dist, next_index});}}}
}int main() {int n, m;bool flag = true;cin >> n >> m;unordered_map<int, unordered_map<int, int>> graph;// 读入图的边for (int i = 0; i < m; i++) {int animal1, animal2, length;cin >> animal1 >> animal2 >> length;graph[animal1][animal2] = length;graph[animal2][animal1] = length;}unordered_map<int, int> longest_paths;for (int animal = 1; animal <= n; animal++) // 从最小编号的动物开始一次执行Dijkstra算法,并算出最短路径的长度{unordered_map<int, int> distances;for (int i = 1; i <= n; i++) distances[i] = INT_MAX; // 初始化所有距离为无限大dijkstra(graph, animal, distances);// 执行检查,如果存在到不了的动物直接结束遍历for (auto& st : distances) {if (st.second == INT_MAX) {flag = false;break;}}if (!flag)break;int longest_path = 0;unordered_map<int, int>::iterator it;for (it = distances.begin(); it != distances.end(); it++) // 找出最长的一条路径{if (it->second > longest_path && it->second != INT_MAX) {longest_path = it->second;}}longest_paths[animal] = longest_path;}int min_longest_path = INT_MAX;int best_animal = -1; // 初始化需要输出的数据for (auto& path : longest_paths) {if (path.second < min_longest_path || (path.second == min_longest_path && path.first < best_animal)) {min_longest_path = path.second;best_animal = path.first;}}if (!flag) {cout << "0" << endl;} else {cout << best_animal << " " << min_longest_path;}return 0;
}

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

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

相关文章

Ubuntu系统下查看安装的CUDA和CUDNN的版本

一、查看 CUDA 版本&#xff1a; #查看cuda版本和显存使用情况nvidia-smi 二、查看 CUDNN 版本&#xff1a; 安装链接&#xff1a;cuDNN Archive | NVIDIA Developer #回到系统主目录 cd ~ #查看cudnn版本 cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJO…

PostgreSQL教程(四十二):参考命令(一)之SQL命令

1、ABORT ABORT — 中止当前事务 大纲 ABORT [ WORK | TRANSACTION ] 描述 ABORT回滚当前事务并且导致由该事务所作的所有更新被丢弃。这个命令的行为与标准SQL命令ROLLBACK的行为一样&#xff0c;并且只是为了历史原因存在。 参数 WORK TRANSACTION 可选关键词。它们没…

华为机考:HJ43 迷宫问题

华为机考&#xff1a;HJ43 迷宫问题 描述 DFS 从迷宫入口开始进行dfs搜索&#xff0c;每次进入一个点&#xff0c;将其加入临时路径数组中&#xff0c;把该位改成0表示不能进入&#xff0c;然后依次搜索该位下、右、上、左四个方向的点&#xff0c;如果搜索的这个点可以进入则…

3d渲染的模型仿佛有一层雾是怎么回事?---模大狮模型网

当在3D渲染的模型上出现仿佛有一层雾的效果时&#xff0c;可能是由于以下几个原因导致的&#xff1a; 环境光设置过高&#xff1a; 如果环境光设置过高&#xff0c;会使整个场景看起来像是笼罩在一层薄雾中。尝试降低环境光的强度&#xff0c;让场景更清晰明亮。 材质透明度设…

对小红书评论基于LDA模型作主题分析

import numpy as np import re import pandas as pd import jieba from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.decomposition import LatentDirichletAllocationdf1 pd.read_csv(小红书评论.csv) # 读取同目录下csv文件 # df1 df1.drop_dup…

渗透测试修复笔记 - 02 Docker Remote API漏洞

需要保持 Docker 服务运行并且不希望影响其他使用 Docker 部署的服务&#xff0c;同时需要禁止外网访问特定的 Docker API 端口&#xff08;2375&#xff09;&#xff1a;通过一下命令来看漏洞 docker -H tcp://ip地址:2375 images修改Docker配置以限制访问 修改daemon.json配…

如何设计出标准化的数据库?(三大范式)

当谈及数据库设计时&#xff0c;我们实际上在谈论如何组织和管理数据以支持应用程序或业务的需求。数据库设计的质量直接影响着系统的性能、可维护性和数据的完整性。那么怎么去设计数据库才可以尽可能地实现一个标准化的数据库呢&#xff1f;这就不得不提到三大范式。 1. 三大…

图【数据结构】

文章目录 图的基本概念邻接矩阵邻接表图的遍历BFSDFS 图的基本概念 图是由顶点集合及顶点间的关系组成的一种数据结构 顶点和边&#xff1a;图中结点称为顶点 权值:边附带的数据信息 路径 &#xff1a; 简单路径 和 回路&#xff1a; 子图&#xff1a;设图G {V, E}和图G1…

MySQL8 设置大小写敏感

问题描述 今天对我本地的数据库迁移服务器上&#xff0c;完成之后启动项目报错 说数据库中不存在 quartz_LOCKS 这张表 我打开服务器上面的数据上面展示的表名是 quartz_LOCKS&#xff0c;然后通过查询 lower_case_table_names 配置可知 show variables like lower_case_tabl…

Kamailio的SIP服务的性能

官方的性能报告&#xff1a; Kamailio (OpenSER) 1.2.0 - Transaction Module and User Location Performance Tests 如下的提取的性能参数也是基于官方的性能报告&#xff0c;信令走的UDP&#xff0c;作为做系统方案的参照&#xff0c;Kamailio的性能还是非常&#xff0c;非常…

leetcode代码记录(盛最多水的容器

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以…

突破编程_C++_STL教程( multiset 的基础知识)

1 std::multiset 概述 std::multiset 是 C STL&#xff08;标准模板库&#xff09;中的一个容器&#xff0c;它定义在头文件<set>中。std::multiset 是一个多重集合容器&#xff0c;允许存储重复的元素键值&#xff0c;并且这些元素键值按照特定的严格弱排序准则进行排序…

幸运数字(蓝桥杯23省赛)

幸运数字&#xff08;蓝桥杯23省赛&#xff09; 题目分析 暴力判断的思路就不讲了&#xff0c;这道题主要想将一个思想&#xff0c;对于这种数字类的题目&#xff0c;对半枚举的思路。 100000000是不符合要求的&#xff0c;所以最多遍历到99999999。这个思路是我一半一半的凑…

【Hibernate-Validate】常用注解

常用注解: NotNull:被注释的元素(任何元素)必须不为 nul, 集合为空也是可以的。NotEmpty:用来校验字符串、集合、map、数组不能为null或也不能为空(字符串传入空格也不可以)(集合需至少包含一个元素)NotBlank:被注释的字符串的必须非空&#xff0c;空格也不行&#xff0c;空字…

Unity3D 动态生成场景管理节点详解

前言 Unity3D 提供了丰富的功能和工具&#xff0c;可以帮助开发者快速高效地创建各种类型的游戏。在游戏开发过程中&#xff0c;有时候我们需要动态生成场景管理节点来管理游戏场景中的各种元素&#xff0c;比如角色、道具、敌人等。本文将详细介绍如何在Unity3D中动态生成场景…

来吧伙计们,让AI教我们怎么说海盗语

“如果想伺机而动&#xff0c;就是这样。”——杰克船长提到海盗&#xff0c;我们往往联想到约翰尼德普在《加勒比海盗》中饰演的杰克船长。我们有什么理由不喜欢海盗呢&#xff1f;他们航行在海上&#xff0c;寻找埋藏的宝藏&#xff0c;痛饮朗姆酒&#xff0c;用自己独特的海…

FreMIM:傅里叶变换与遮罩的图像建模在医学图像分割中的应用

代码链接&#xff1a;GitHub - Rubics-Xuan/FreMIM: This repo holds the official code for the paper "FreMIM: Fourier Transform Meets Masked Image Modeling for Medical Image Segmentation". 论文链接&#xff1a;https://arxiv.org/abs/2304.10864 收录于…

差旅补助解决方案|数字化差补赋能业务提效

长期以来&#xff0c;差旅补助一直是企业为了激励员工出差并表达对员工的关怀而采取的一种方式&#xff0c;以经济和福利支持来鼓励员工积极投入工作。然而&#xff0c;由于传统差旅补助的核算、发放和管理方式存在诸多问题&#xff0c;往往适得其反&#xff0c;无法实现企业的…

RocketMQ 面试题及答案整理,最新面试题

RocketMQ的消息存储机制是如何设计的&#xff1f; RocketMQ消息存储机制的设计原理&#xff1a; 1、CommitLog文件&#xff1a; 所有的消息都存储在一个连续的CommitLog文件中&#xff0c;保证了消息的顺序写入&#xff0c;提高写入性能。 2、消费队列&#xff1a; 为每个主…

web前端练习一

1.电子汇款单 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>电子汇款单</title> </head> <body><h2>工商银行电子汇款单</h2><table border"1px">&…