题目背景
小L发现了一个大宝藏!看样子很像是藏宝图!小L惊喜若狂,她幻想到了自己变成富婆的美妙日子。但不幸的是,藏宝图上的文字她都看不懂,这要怎么找到藏宝之处啊摔!她拉来了她的好朋友小J,希望她们能一起想想办法。
题目描述
“这个字体好熟悉啊...”小J看着看着突然感叹。
“哎?!有发现吗有发现吗,快你再仔细想想。”小L信心重燃。
“是我最近研究过的一本书!上面的词汇好像就是这种语言。”
“好耶!”
“可是得你自己一个一个翻译啦!”
可恶!小L一点也不想翻译,而且书有破损,小L不想到最后是白费心力。所以她聘请聪明的你来帮她解决这个问题,你能解出藏宝图上的话吗?
输入格式
给你N(N≤1000)组数,代表书上面的词汇个数。
下面有N行,每行有两串字符,分别表示现代语言和古语言(保证不出现一词多义的情况)。
最后一行有句话S(∣S∣<1000000),表示需要你进行翻译的字符串(全由古语言组成)。
输出格式
一串字符串,表示翻译过后的字符串。
或者如果不能完成翻译工作就输出 -1 让小L死心qwq。
输入输出样例
输入 #1
3 now njp serious jifhsx I'm wakayini njp wakayini jifhsx输出 #1
now I'm serious输入 #2
1 yes bondu yes输出 #2
-1
题解
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int mo = 1e3;
const int N = 1e5+5;
map<string,string>mp;
void solve()
{
vector<string>ans;
int n;
cin >> n;
string x,y;
for(int i=1;i<=n;i++)
{
cin>>x>>y;
mp[y]=x;
}
int flg=0;
while(cin>>y)
{
auto it=mp.find(y);
//cout<<mp[y];
if(it!=mp.end()) ans.push_back(mp[y]);else flg=-1;
}
if(flg==-1)cout<<-1;
else
for(auto a:ans)
{
cout<<a<<' ';
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
solve();
return 0;
}