时间限制:1.000S 空间限制:128MB
题目描述
假设你手里有一串钥匙,这串钥匙上每把钥匙都有一个编号,对应着一个房门的编号。现给你一个房门编号,你需要判断是否能够打开该房门。
输入描述
测试数据共有多组。
第一行为一个整数 s,表示共有多少组测试数据。
每组第一行有一个整数 n,表示钥匙串上有多少把钥匙。
后面共有 n 行输入,每行两个整数,第一个整数 k 表示钥匙编号,第二个整数 d 表示房门编号。
最后一行有一个整数 x,表示需要打开的房门编号。
输出描述
输出多组,每组占一行。 如果能打开,则输出钥匙编号,不能打开则输出“Can't open the door.”。
输入示例
2
5
878788 9373833
837837 3837378
378338 3398939
388733 2329389
878373 3938399
3938399
3
998389 3892393
444323 3892783
883782 5334332
8739833
输出示例
878373
Can't open the door.
代码示例
#include<iostream>
#include<unordered_map>
using namespace std;
int main()
{
int s,n,key,door,x;
cin >> s;
while(s--)
{
unordered_map<int,int> umap;
cin >> n;
while(n--)
{
cin >> key >>door;
umap[key] =door;//将key和对应的door放进map中
}
cin >> x;
bool flag=true;
//遍历map
//const 表示变量ky不可修改,加&避免数值赋值,提高传递效率
for(const pair<int,int> &kv : umap )
{
//检查当前赋值对中的值是否等于x
if(kv.second ==x )
{
cout << kv.first <<endl;
//如果找到了匹配的键值对,将kv.first输出到标准输出,换行
flag = false;
break;
}
}
if(flag)
cout << "Can't open the door." << endl;
}
}