7-8 哈利·波特的考试 (25 分)(详解+思路分析)真香啊

一:题目:

哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是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

二:思路分析:

多源点最短路径,分析题目时,如果不知从何下手 可以从数据入手 分析数据特征 比自己干推 要省点时间

三:上码

//分析输出 0 时 那是说明图是不连通的 统计结点个数 不够N则输出0 (只带1只动物是不可能完成所有变形要求的);
// 多源点最短路径问题 ,从数据分析来看 带4在去则 最长的路径长度也就是 70,那么的话 如果我选择1的话 那么 在他这个最短路径当中,最长的是 100 ,那么也就是说
//求出所有点 当中最长的那个路径长度进行比较,选择最小的那个即是要选择的结点 。如果有相同最小长度的结点 那么选择其中编号 最小的  
#include<bits/stdc++.h>
using namespace std;
#define infinite 99999int N,M;
int cnt;//记录访问结点的个数
typedef struct Graph* PtrGraph;
typedef struct Graph
{int Ne;int Nv;int Data[101][101];
}graph;void creatGraph(PtrGraph G)
{int i,j,w;cin >> N >> M;G->Nv = N;G->Ne = M;for(int i = 1; i <= G->Nv; i++){for(int j = 1; j <= G->Nv; j++){G->Data[i][j] = infinite;//初始化 设置为无穷大 方便没有链接的点表示距离if(i == j)G->Data[i][j] = 0; }}for(int k = 0; k < G->Ne; k++){cin >> i >> j >> w;G->Data[i][j] = w;G->Data[j][i] = w;} }
//每次将其中的 最大值 返回
int dijkstra(PtrGraph G,int a,int vis[])
{int dist[101] = {0};int max = 0;vis[a] = 1;cnt++;for(int i = 1; i <= G->Nv; i++){dist[i] = G->Data[a][i];}while(1)//将剩余的结点 进行多次求最小值;{   int m = -1;int min = infinite;for(int i = 1; i <= G->Nv; i++){if(dist[i] < min && vis[i] != 1){min = dist[i];m = i;}}if(m == -1)break;//证明已经没有最小的权值了 vis[m] = 1;//记录已经访问过的cnt++;//记录访问的结点个数for(int i = 1; i <= G->Nv; i++){if( vis[i] != 1 && G->Data[m][i] + min < dist[i]){dist[i] = G->Data[m][i] + min;}}}for(int i = 1; i <= G->Nv; i++){//cout << dist[i] << ' ';if(dist[i] > max){max = dist[i];
//            cout << dist[i] << ' ';}}return max;}
int main()
{PtrGraph G;int flag = 0;vector<int>v;int min = 1000,array[101],k = 1;G = (PtrGraph)malloc(sizeof(struct Graph));creatGraph(G);int a = 1;v.push_back(a);//vector容器的下标 是从0开始 我们想要的是从1开始for(int i = 1; i <= G->Nv && flag ==0; i++){cnt = 0;int visited[101] = {0};int temp = dijkstra(G,i,visited);array[k++] = temp;v.push_back(temp);//这里vector容器的下标 是从1开始if(cnt != N){flag = 1;}}if( flag == 1)cout << "0" << endl;else{sort(v.begin()+1,v.end());for(int i = 1; i <= k; i++){if(array[i] == v[1]){if( i < min )min = i;}}cout << min << ' ' << v[1] << endl;}}

在这里插入图片描述

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

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

相关文章

[SpringBoot2]welcomefavicon

欢迎页支持 ● 静态资源路径下 index.html ○ 可以配置静态资源路径 ○ 但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问 ● controller能处理/index 自定义 Favicon favicon.ico 放在静态资源目录下即可。

go语言io reader_go语言之IO操作(待补充)

前言在Go中,输入和输出操作都是使用原语实现的,原语将数据模拟成可读的或者可写的字节流。而Go的io包提供了io.Reader(将数据从某个资源读取到传输缓冲区被流式传输和使用)和io.Writer(从缓冲区读取数据,并写入目标资源)接口。实现了io.Reader接口的唯一方法Read(p []byte)(n i…

ABPHelper.CLI及其依赖项简单介绍

图片gif无法查看&#xff0c;请查看原文至博客园查看详情。目录目录ABPHelper.CLIScriban通过Microsoft.Extensions.FileProviders.Embedded获取嵌入资源通过静态方法获取文件内容使用Microsoft.Extensions.FileProviders.Physical获取文件内容Microsoft.CodeAnalysis.CSharpHu…

文件的创建与读取 文件的数据添加

文件的创建与读取 文件的数据添加 一&#xff1a;概要 1&#xff1a;首先要站在程序的角度上。 2&#xff1a;文件的创建 即将程序中的数据 写入到文件当中。 3&#xff1a;文件的读取 即将一个文件中的信息读取到程序当中。 二&#xff1a;步骤 1&#xff1a;创建文件…

[RabbitMQ]整合SpringBoot

整合SpringBoot 创建项目 引入依赖 <dependencies><!--RabbitMQ 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><…

mysql 固定符号分列显示_MySql中指定符号分割并分行展示

1.涉及到的函数三个&#xff1a;1.1 REPLACE(value,str1,str2)用法规则&#xff1a;使用str2替换掉value中的所有的str1;SELECT REPLACE(我来了,来,走)执行结果如下&#xff1a;1.2 LENGTH(str)用法规则&#xff1a;获取字符串的长度&#xff0c;使用 uft8(UNICODE 的一种变长字…

​设计模式之装饰模式

装饰模式 DecoratorIntro装饰模式&#xff0c;动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式比生成子类更为灵活装饰模式又被称为装饰器模式或装饰者模式使用场景装饰模式是为已有功能动态地添加更多功能的一种方式当系统需要新功能的时候…

C++中 Map的了解与基本用法(代码演示+自我总结+map中一对多的用法)

C中 map的了解与基本用法&#xff08;代码演示&#xff09; 一&#xff1a;map的基本认识 Map是STL的一个关联容器&#xff0c;它提供一对一&#xff08;其中第一个可以称为关键字&#xff0c;每个关键字只能在map中出现一次&#xff0c;第二个可能称为该关键字的值&#xff…

[Redis6]跳跃表(跳表)

跳跃表(跳表) 简介 有序集合在生活中比较常见&#xff0c;例如根据成绩对学生排名&#xff0c;根据得分对玩家排名等。对于有序集合的底层实现&#xff0c;可以用数组、平衡树、链表等。数组不便元素的插入、删除&#xff1b;平衡树或红黑树虽然效率高但结构复杂&#xff1b;…

mysql 5.5 免安装_mysql 5.5.56免安装版配置方法

mysql 5.5.56免安装版配置方法&#xff0c;本文通过文字代码详解&#xff0c;具体内容如下所示&#xff1a;1. 下载mysql-5.5.56-winx64网址: dev.mysql.com/downloads/mysql/2. 解压MySQL压缩包将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是:"D:\Program File…

ASP.NET Core中的响应压缩

介绍响应压缩技术是目前Web开发领域中比较常用的技术&#xff0c;在带宽资源受限的情况下&#xff0c;使用压缩技术是提升带宽负载的首选方案。我们熟悉的Web服务器&#xff0c;比如IIS、Tomcat、Nginx、Apache等都可以使用压缩技术&#xff0c;常用的压缩类型包括Brotli、Gzip…

7-14 电话聊天狂人 (25 分)map做法 + 详解 + 思路分析

7-14 电话聊天狂人 (25 分)map做法 1&#xff1a;题目 给定大量手机用户通话记录&#xff0c;找出其中通话次数最多的聊天狂人。 输入格式: 输入首先给出正整数N&#xff08;≤10 ​5 ​​ &#xff09;&#xff0c;为通话记录条数。随后N行&#xff0c;每行给出一条通话记录…

[Redis6]配置文件详解

配置文件 单位 配置大小单位,开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit 大小写不敏感 INCLUDES包括 类似jsp中的include&#xff0c;多实例的情况可以把公用的配置文件提取出来 网络相关配置 bind 默认情况bind127.0.0.1只能接受本机的…

连接不上mysql 1045_技术分享 | MySQL 客户端连不上(1045 错误)原因全解析

原创作者&#xff1a; 管长龙 译作者&#xff1a;Carlos Tutte、Marcos Albe 翻译&#xff1a;管长龙在我们学习 MySQL 或从事 MySQL DBA 工作期间&#xff0c;时常会遇到&#xff1a;“我尝试连接到 MySQL 并且收到1045 错误&#xff0c;但我确定我的用户和密码都没问题”。不…

JWT是个什么鬼?

【答疑解惑】| 作者 / Edison Zhou这是恰童鞋骚年的第269篇原创内容前面一篇我们了解了微服务安全认证架构是如何演进而来的&#xff0c;但是发现v2.5架构仍然较重&#xff0c;有没有轻量级一点的方法呢&#xff1f;其实业界早已有了实践&#xff0c;它就是基于JWT的安全认证架…

java中编译类型的方法 和 运行时的类型方法 有什么区别

1&#xff1a;引言 这是在复习多态当中&#xff0c;看到不太理解的东西&#xff0c; 就是 Java编译类型和运行类型 2&#xff1a;多态 多态首先得是在 有继承关系和方法重写的类当中&#xff1b;指同一个方法在被调用时&#xff0c;由于对象不同则会有不同的效果&#xff08…

[Redis6]发布和订阅

Redis6的发布和订阅 什么是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 发布订阅命令行实现 打开一个客户端订阅channel1 打开另一个客户端&…

mysql innodb log_教你如何理解mysql中的innoDB log

前言:之前一直弄不清楚mysql里面bin log和innodb log文件的区别&#xff0c;在脑子里面一直有个疑问binlog日志文件已经可以用来进行数据库的日志备份恢复了&#xff0c;怎么又多了一个redo log文件了。相信也有很多人有这个疑惑&#xff0c;现在把整个过程文档整理出来&#x…

解决Java当中 用point 画图时背景颜色变成黑色问题

一&#xff1a;导入与源码 package src.cn.wyj.飞机;import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame;public class MyGame1 extends JF…

微服务框架Demo.MicroServer运行手册

一.背景说明&#xff1a;之前分享过一个微服务开发框架&#xff0c; “分享一个集成.NET CoreSwaggerConsulPollyOcelotIdentityServer4ExceptionlessApolloSkyWalking的微服务开发框架”&#xff0c;前两天在Github上收到一个Issues&#xff0c;是想我这边提供下完整的运行文档…