蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手。幸运的是,小岛上有一扇上古之神打造的封印之门,可以通往近卫军团,传闻至今没有人能解除封印。

封印之门上有一串文字,只包含小写字母,有 k 种操作规则,每个规则可以把一个字符变换成另外一个字符。经过任意多次操作以后,最后如果能把封印之门上的文字变换成解开封印之门的文字,封印之门将会开启。

蒜头君战斗力超强,但是不擅计算,请你帮忙蒜头君计算至少需要操作多少次才能解开封印之门。

输入格式

输入第一行一个字符串,长度不大于 1000,只包含小写字母,表示封印之门上的文字。

输入第二行一个字符串,只包含小写字母,保证长度和第一个字符串相等,表示能解开封印之门的文字。

输入第三行一个整数 k(0≤k≤676)。

接下来 k 行,每行输出两个空格隔开的字符 a, b,表示一次操作能把字符 a 变换成字符 b。

输出格式

如果蒜头君能开启封印之门,输出最少的操作次数。否则输出一行 −1-1−1。

样例输入

abcd
dddd
3
a b
b c
c d
样例输出

6

思路:本来是利用map记录字符转换,然后通过循环查找知道两个字符一样。但是呢,超时。。。原来这个求任意两个字符之间的最短路径。用弗洛伊德算法。
原来的代码:

#include<iostream>
#include<cstdio>
#include<map>
#include<cstring>
using namespace std;
char a[1005];
char b[1005];
int k;
int cnt = 0;
map<char,char> mp;int main()
{char ch;int i = 0;char p,q;while(scanf("%c",&ch)&&ch != '\n'){a[i++] = ch;}//a[i] = '\0';i = 0;while(scanf("%c",&ch)&&ch != '\n'){b[i++] = ch;}cin>>k;for(int i = 0;i<k;i++){cin>>p>>q;mp[p] = q;}for(int i =0;i<strlen(a);i++){while(a[i]!=b[i]){a[i] = mp[a[i]];cnt++;}}cout<<cnt<<endl;return 0;
}

floyd()算法的核心只有五句

void Flody()
{for(int k = 0;k<=n;k++)for(int i = 0;i<n;i++)for(int j = 0;j<n;j++){if(m[i][j] > m[i][k]+m[k][j])m[i][j] = m[i][k]+m[k][j];}}
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[1005];
char b[1005];
int dis[28][28];
const int inf = 100000000;
int k;
int cnt = 0;
void floyd();
int main()
{char p,q;scanf("%s",a);scanf("%s",b);//总是忘记用%s读入int len = strlen(a);cin>>k;for(int i = 0;i<26;i++){for(int j = 0;j<26;j++){dis[i][j] = inf;}dis[i][i] = 0;}while(k--){//getchar(); //  scanf("%c",&p);//  getchar();//读空格 //  scanf("%c",&q);//  getchar();//读回车 //  dis[p-'0'][q-'0'] = 1;char s[3],e[3];scanf("%s%s",s,e); //%s是遇到空字符停止,而gets取得字符串时,是在遇到EOF(串尾)时停止 if(s[0]!=e[0])dis[s[0]-'a'][e[0]-'a']=1;}floyd();for(int i = 0;i<len;i++){if(dis[a[i]-'a'][b[i]-'a']>=inf){cout<<-1<<endl;return 0;}else cnt += dis[a[i]-'a'][b[i]-'a'];}cout<<cnt<<endl;return 0;
}
void floyd()
{for(int m = 0;m<26;m++){for(int i = 0;i<26;i++){for(int j = 0;j<26;j++){if(dis[i][j]>dis[i][m]+dis[m][j])dis[i][j]=dis[i][m]+dis[m][j];}}}
}

2018蓝桥杯模拟赛(一)H【floyd求最短路径】相关推荐

  1. 2018蓝桥杯模拟赛·青出于蓝而胜于蓝 DFS序+树状数组

    武当派一共有 nnn 人,门派内 nnn 人按照武功高低进行排名,武功最高的人排名第 111,次高的人排名第 222,... 武功最低的人排名第 nnn.现在我们用武功的排名来给每个人标号,除了祖师爷 ...

  2. 2018 蓝桥杯省赛 B 组模拟赛(一)--封印之门

    题目链接:https://nanti.jisuanke.com/t/A1594 蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手.幸运的是,小岛上有一扇上古之神打造的封印之门,可以 ...

  3. 第十三届蓝桥杯模拟赛(第三期)试题与题解 C++

    文章目录 第十三届蓝桥杯模拟赛(第三期)试题与题解 1.试题A 题解:数制转换 2.试题B 题解:枚举 3.试题C 题解:枚举 4.试题D 题解:最小生成树 5.试题E 方法一:暴力求和 方法二:一维 ...

  4. 【蓝桥杯Web】大一小白参与蓝桥杯模拟赛二期web组体会

    目录 前言 一.相关比赛介绍 1.ACM国际大学生程序设计竞赛 2.蓝桥杯 3.GPLT团队程序设计天梯赛 4.leetcode周赛和双周赛 5.PAT 二.蓝桥杯 1.应该参加蓝桥杯吗? 2.如何进 ...

  5. 第十三届蓝桥杯模拟赛(第二期)试题与题解 C++

    第十三届蓝桥杯模拟赛(第二期)试题与题解 1.试题A [问题描述] ​ 小蓝的IP地址为 192.168. * .21,其中 * 是一个数字,请问这个数字最大可能是多少 ? 题解 IP地址由四个字节组 ...

  6. 长沙学院2022蓝桥杯模拟赛一

    长沙学院2022蓝桥杯模拟赛一_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJhttps://ac.nowcoder.com/acm/contest/26010#ques ...

  7. 2020年蓝桥杯模拟赛2020.3.25直播笔记

    2020年蓝桥杯模拟赛解题报告(CPP版本) 第八题 长草的bfs写法[我想暴力模拟O kmn] 深搜会爆 bfs像投到水里的涟漪 问题: const int dx[] = {1, 0, -1, 0} ...

  8. 第十三届蓝桥杯模拟赛第二期JAVA组个人题解

    第十三届蓝桥杯模拟赛第二期JAVA组个人题解 文章目录 第十三届蓝桥杯模拟赛第二期JAVA组个人题解 题目1 题目2 题目3 题目4 题目5 题目6 题目7 题目8 题目9 题目10 题目1 小蓝的I ...

  9. 蓝桥杯模拟赛第二场(web)

    文章目录 蓝桥杯模拟赛第二场(web) 1 卡片化标签页 2 随机数生成器 3 个人博客 4 学生成绩统计 5 水果摆盘 6 给页面化个妆 7 小兔子爬楼梯 8 时间管理大师 9 购物车 10 菜单树 ...

最新文章

  1. 由几道JS笔试题引发的知识点探究
  2. element-ui table表格内容相同自动合并
  3. Java---类加载
  4. 只用ng test命令测试单个单元测试用例的另一种方法
  5. Java 8快多少?
  6. [python]json.loads 几种错误 解决方案
  7. websocket php MySQL_PHP写了一个websocket服务,mysql连接实例丢失问题怎么解决?
  8. 能够生成动态图片的R模块:rCharts
  9. Qt Creator 第一个插件
  10. 人脸检测(十)--强分类器源码分析
  11. openai-gpt_GPT-3的不道德故事:OpenAI的百万美元模型
  12. matlab配置vlfeat库(0.9.21)
  13. time+dd测试硬盘读写速度
  14. 【干货分享】嫁给爱情字体设计创意
  15. DNN常见激活函数与其求导公式及来源
  16. 【技巧】我是如何 搜索 到想要的信息的
  17. 基于diffusion models的无监督Image-to-Image转化
  18. 巴西龟购买指南(避免掉坑)
  19. EP4CE10系列芯片引脚图
  20. Tomcat绑定IPV4端口

热门文章

  1. 加入klamm我就返佣(强力返佣!!)
  2. Less使用教程和步骤
  3. SpringBoot 整合MQTT 消息推送
  4. 基于JEECG制作一个通用的级联字典选择控件-DictCascadeUniversal
  5. Android Dagger-Hilt 依赖注入
  6. B. Petya and Square
  7. JavaSwing仿QQ登录界面,注释完善,适合新手学习
  8. python psutil替代_psutil
  9. 基于SSM的学生宿舍管理系统(含论文和PPT)+视频讲解+安装部署+效果视频+部署视频
  10. 笔记本(windows 10 1909)双显卡OBS Studio录制黑屏(显示器捕获)问题解决方案