A Serial Killer

本文解析了CodeForces平台上的A级题目“ASerialKiller”,介绍了连环杀手选择受害者的模式,并提供了清晰的解题思路及代码实现。

题目链接  http://codeforces.com/problemset/problem/776/A

A. A Serial Killer
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Our beloved detective, Sherlock is currently trying to catch a serial killer who kills a person each day. Using his powers of deduction, he came to know that the killer has a strategy for selecting his next victim.

The killer starts with two potential victims on his first day, selects one of these two, kills selected victim and replaces him with a new person. He repeats this procedure each day. This way, each day he has two potential victims to choose from. Sherlock knows the initial two potential victims. Also, he knows the murder that happened on a particular day and the new person who replaced this victim.

You need to help him get all the pairs of potential victims at each day so that Sherlock can observe some pattern.

Input

First line of input contains two names (length of each of them doesn't exceed 10), the two initials potential victims. Next line contains integer n (1 ≤ n ≤ 1000), the number of days.

Next n lines contains two names (length of each of them doesn't exceed 10), first being the person murdered on this day and the second being the one who replaced that person.

The input format is consistent, that is, a person murdered is guaranteed to be from the two potential victims at that time. Also, all the names are guaranteed to be distinct and consists of lowercase English letters.

Output

Output n + 1 lines, the i-th line should contain the two persons from which the killer selects for the i-th murder. The (n + 1)-th line should contain the two persons from which the next victim is selected. In each line, the two names can be printed in any order.

Examples
input
ross rachel
4
ross joey
rachel phoebe
phoebe monica
monica chandler
output
ross rachel
joey rachel
joey phoebe
joey monica
joey chandler
input
icm codeforces
1
codeforces technex
output
icm codeforces
icm technex
题目大意:

有个连环杀人犯,每天都会从两个人中选择一个人杀掉。举一组测试数据吧说明题意吧,这样容易理解题意。就按照第一组测试数据:第一行两个字符串分别代表两个人的名字,杀人犯第一天要从这两个人中选择一个人杀掉。第二行 4 表示天数,下面四行,每行两个人的名字(的第一个人的名字表示在这一天将要被杀的,第二个字符串表示又遇见的人,下面的字符串意思一样)。题目要求输出当天没有被杀掉的人。

解题思路:

大家主要是题意没看懂,看懂题意后代码就不难了。唯一需要注意的是输出的第一行就是输入的第一行......

代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s1,s2,s3[1005],s4[1005];
    int n;
    while(cin>>s1>>s2)
    {
        cin>>n;
        for(int i=0;i<=n-1;i++)
            cin>>s3[i]>>s4[i];
        cout<<s1<<' '<<s2<<endl;
        for(int i=0;i<=n-1;i++)
        {
            if(s3[i]==s1)
            {
                cout<<s2<<' '<<s4[i]<<endl;
                s1=s2;
                s2=s4[i];
                continue;
            }
            if(s3[i]==s2)
            {
                cout<<s1<<' '<<s4[i]<<endl;
                s2=s4[i];
                continue;
            }
        }
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值