题目链接:https://nanti.jisuanke.com/t/A1594

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

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

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

输入格式

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

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

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

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

输出格式

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

样例输入复制

abcd
dddd
3
a b
b c
c d

样例输出复制

6

题目来源

2018 蓝桥杯省赛 B 组模拟赛(一)

解题思路:分下知,这是求一个字符转化为另一个字符的最少步数问题,即归纳为最短路问题(Flod算法)。

注意:这个题有坑,代码里面会说明,当时没考虑到,只过了两个样例。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <vector>
#include <string>
#define cla(a, sum) memset(a, sum, sizeof(a))
#define rap(i, m, n) for(i=m; i<=n; i++)
#define rep(i, m, n) for(i=m; i>=n; i--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> P;
const int Inf = 0x3f3f3f3f;
const double eps = 1e-8;
const int maxn = 1e3+5;string s,s1;
int k,n;
int f[30][30];void init(){int i,j;rap(i,0,29){rap(j,0,29){f[i][j]=1e5;}f[i][i]=0;//相同之间转化步数为0}
}int main()
{cin>>s>>s1;int i,j,u,v;n=s.size() ;init();//初始化cin>>k;getchar();char l,r;rap(i,1,k){scanf("%c %c",&l,&r);
//      cout<<l<<r<<endl;getchar();u=l-'a'+1;v=r-'a'+1;if(u!=v)//注意u和v可能相等,此时就不能赋值1了f[u][v]=1;}for(u=1;u<=26;u++){for(i=1;i<=26;i++){for(j=1;j<=26;j++){f[i][j]=min(f[i][j],f[i][u]+f[u][j]);}}}int sum=0;for(i=0;i<n;i++){u=s[i]-'a'+1;v=s1[i]-'a'+1;if(f[u][v]>=1e5){printf("-1");return 0;}sum+=f[u][v];}cout<<sum;return 0;
}

2018 蓝桥杯省赛 B 组模拟赛(一)--封印之门相关推荐

  1. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  2. 2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会

    2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会 这题有两种情况 1.最大的和是在0~n-1 2.最大的和越过了首尾 这时候只要用n个数的和 - 0~n-1 的连续的最小和 这是求连续子集最大.最小 ...

  3. 2019 蓝桥杯省赛 B 组模拟赛(一)——计蒜客(未完待续)

    比赛链接: 2019 蓝桥杯省赛 B 组模拟赛(一) 友情提示: 蓝桥杯的头文件,如果不是都记得,可以直接万能头文件 #include <bits/stdc++.h>, 不过有的时候,这样 ...

  4. 2020年 第11届 蓝桥杯 C/C++ B组 省赛真题详解及小结【第1场省赛2020.7.5】【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  5. 2015年第六届蓝桥杯C/C++B组省赛题目解析

    1.奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利. 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是 ...

  6. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  7. python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节

    python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节 题目 问题描述 在计算机存储中,12.5MB是多少字节? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整 ...

  8. 2018 蓝桥杯省赛 B 组模拟赛(一)

    A 题目 今天蒜头君带着花椰妹和朋友们一起聚会,当朋友们问起年龄的时候,蒜头君打了一个哑谜(毕竟年龄是女孩子的隐私)说:"我的年龄是花椰妹年龄个位数和十位数之和的二倍". 花椰妹看 ...

  9. 计蒜客2018蓝桥杯省赛B组模拟赛(一)题目及解析(未完待续)

    一.题目列表 A. 结果填空:年龄         分值: 3 B. 结果填空:开关灯     分值: 7 C. 结果填空:U型数字  分值: 9 D. 代码填空:LIS         分值: 11 ...

最新文章

  1. 手把手教你如何扩展GridView之自带CheckBox
  2. minheight能继承吗_借父母名买房到底归谁?其他兄妹能继承吗?
  3. select 语句的执行顺序
  4. 停止宗教战争,好吗?
  5. GMIS 2017大会杨洋演讲:认知分析-透过机器重新审视商业本质
  6. 搞怪菜鸟加入域全程图解[为企业部署Windows Server 2008系列十二]
  7. mysql与jmeter环境变量配置_Java开发技术大杂烩(一)之Redis、Jmeter、MySQL的那些事...
  8. vue键盘抬起_vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
  9. MyBatis框架笔记02:接口方式使用MyBatis
  10. data2vec!统一模态的新里程碑
  11. C++两个函数可以相互递归吗_C语言“最难啃”的三块硬骨头!你知道吗?
  12. linux内核分析和应用 -- 进程与线程(上)
  13. cad怎么查找未闭合_CAD有个工具(命令)是清除没有闭合的图形是哪个
  14. css绘制一个Pinia小菠萝
  15. 2021全球程序员收入报告!字节高级码农年薪274万元排第5
  16. 计算机考试的知识要记忆背,2017计算机等级考试(NCRE)备考小技巧
  17. 第一届华数杯A题思路分析
  18. 基于C90标准的C语言开发工具
  19. 小程序智能聊天机器人(二)
  20. 2019校招字节跳动、美团、oppo安卓开发新鲜面筋

热门文章

  1. linux 实现SNAT技术
  2. android deeplink打开APP
  3. [PTA]单链表基本操作
  4. 论文笔记——Fair Resource Allocation in Federated Learning
  5. 辽宁特色小吃之大张火勺
  6. 2014 西安邀请赛状压DP
  7. 常见的对象数据库有哪些
  8. 移远BC95手动接入网络操作步骤
  9. python生成词向量_gensim的word2vec如何得出词向量(python)
  10. Eclipse 重新定位svn资源库报错