lecture讲座(洛谷)

题目描述

你现在有一位新图论教授,你觉得他讲课讲的很好,但他说话实在是太快了,搞得你根本没有时间记笔记。所以呢,你有一个计划来跟上他讲课时的“脚步”,并记下重要的笔记。
你总共会两种语言:A 语言和 B 语言,教授用来讲课的是其中的 A 语言。A 语言和 B 语言有以下共同点:

  • 它们都由若干小写字母构成;
  • 每个单词里都不包括空格;
  • 它们的长度都不超过 10。

另外,可以保证同一种语言中任意两个单词都有不同的拼写,且 A 语言的每一个单词与 B 语言中的每一个单词一一对应。
你的做笔记方式如下:

  • 你必须写出写出教授给出的每一个单词;
  • 为保证写单词用时最短,你必须要选择两种语言中单词长度更短的一个;
  • 如果两个单词的长度一样,为保证讲课的原汁原味,你会选择第一种语言来做笔记。

我们会给你教授的演讲。而你呢,需要编一个程序来写出你的笔记。

输入描述

第一行包括两个整数,分别为教授的演讲里有多少个单词的 nn,还有两种语言中共有多少词汇的 mm(1≤n≤30001≤n≤3000,1≤m≤30001≤m≤3000)
接下来有 mm 行,每行两个单词,分别为 aiai 和 bibi(两种语言里的单词)
最后一样中有 nn 个单词,代表教授的演讲。

输出描述

输出 nn 个单词,代表按照题目中的规则你记下的笔记。

样例输入

4 3
codeforces codesecrof
contest round
letter message
codeforces contest letter contest

样例输出

codeforces round letter round

提示

解题关键:C++中map的应用

 

#include<iostream>
#include<string>
#include<map>
#include<set>
using namespace std;
int main()
{
    map<string,string>arr;
    int n,m;
    cin>>n>>m;
    string str;
    
    for(int i=0;i<m;i++){
        string s1,s2;
        cin>>s1>>s2;
        arr[s1]=s2;
    }
    for(int i=0;i<n;i++){
        cin>>str;
        if(str.length()<=arr[str].length()){
            cout<<str<<" ";
        }
        else{
            cout<<arr[str]<<" ";
        }
    }
    return 0;
}
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值