Banana

  • 时间:200ms
  •  内存:131072K


Bananas are the favoured food of monkeys.

In the forest, there is a Banana Company that provides bananas from different places.

The company has two lists.

The first list records the types of bananas preferred by different monkeys, and the second one records the types of bananas from different places.

Now, the supplier wants to know, whether a monkey can accept at least one type of bananas from a place.

Remenber that, there could be more than one types of bananas from a place, and there also could be more than one types of bananas of a monkey's preference.

Input Format

The first line contains an integer TT, indicating that there are TT test cases.

For each test case, the first line contains two integers NN and MM, representing the length of the first and the second lists respectively.

In the each line of following NN lines, two positive integers i, ji,j indicate that the ii-th monkey favours the jj-th type of banana.

In the each line of following MM lines, two positive integers j, kj,k indicate that the jj-th type of banana could be find in the kk-th place.

All integers of the input are less than or equal to 5050.

Output Format

For each test case, output all the pairs x, yx,y that the xx-the monkey can accept at least one type of bananas from the yy-th place.

These pairs should be outputted as ascending order. That is say that a pair of x, yx,y which owns a smaller xxshould be output first.

If two pairs own the same xx, output the one who has a smaller yy first.

And there should be an empty line after each test case.

样例输入


1
6 4
1 1
1 2
2 1
2 3
3 3
4 1
1 1
1 3
2 2
3 3
样例输出


1 1
1 2
1 3
2 1
2 3
3 3
4 1
4 3

题意:
森林里的香蕉运输公司有两张清单,第一张清单有 n 行,第二张清单有 m 行,第一张清单是统计 i 种猴子喜欢 j 类型的的香蕉,第二张清单是统计 i 种香蕉在 j 地方有,现在这个运输员想知道 i 种猴子喜欢的香蕉在哪种地方有,统计的规则是猴子的编号从小到大,如果猴子编号一样,则按地方的编号从小打到大排列。


分析:
本题使用 vector 数组和 sort 排序做,值得注意的是每组测试数据完成之后都要有一行空行。



#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
int main()
{
    int t,n,m,a,b;
    scanf("%d",&t);
    while(t--)
    {
        int max1=-1,pre[55];
        vector<int> s[55],h[55];
        scanf("%d %d",&n,&m);
        for(int i=0;i<n;i++)
        {
            scanf("%d %d",&a,&b);
            s[a].push_back(b);//统计 a 种猴子喜欢的香蕉种类
            if(max1<a)//记录最大编号的猴子,避免后面不必要的循环次数
                max1=a;
        }
        for(int i=0;i<m;i++)
        {
            scanf("%d %d",&a,&b);
            h[a].push_back(b);//统计 i 种香蕉的种植地
        }
        for(int i=0; i<=max1; i++)
        {
            int k=0;
            memset(pre,-1,sizeof(pre));
            if(s[i].size()!=0)//如果有此类猴子喜欢的香蕉存在
            {
                for(int j=0; j<s[i].size(); j++)//搜索此类香蕉的种植地
                {
                    int temp=s[i][j];
                    for(int l=0; l<h[temp].size(); l++)
                    {
                        pre[k++]=h[temp][l];//将一类猴子喜欢的所有种类香蕉的种植地都存入到pre数组
                    }
                }
                sort(pre,pre+k);//对pre数组排序
                for(int l=0;l<k;l++)//对pre数组去重,避免输出重复的种植地
                    if(pre[l]!=pre[l+1])
                        printf("%d %d\n",i,pre[l]);
            }
        }
        printf("\n");
    }
    return 0;
}



. banana_1.2.1_4 应用大小:12.33 MB 应用分类:社交 开发厂商:金林 安全检测:安全 版本:1.2.1 语言:中文 时间:2015-01-19 10:17:12 运行环境:Android 2.2及以上版本 本品不能取代拨号,打电话紧急时候还是得用系统自带的,我们不是拨号软件,我们做的只是让您在玩腻了系统那个丑不拉几的拨号页面之后感受一下什嘛叫好玩!!! 2.有想过看见漂亮妹子在面前该怎么搭讪么?是上去拍肩要电话被抽几个大嘴巴?还是凑上去摸手求微信被来一个过肩摔?你只要在妹子面前掏出手机打开Banana,然后随意按几个键。妹子就会两眼放光直接凑过来问,大哥这是啥APP?大哥在哪下呢?大哥做保健么? 3.第三点功能暂时没想出来要做啥,本来是想做一个能够改变全球经济命运,能够做到人人有房住家家有肉吃。但是联合国秘书长用Banana给我打了个电话,说要是我把这些事都做了他们就失业了,说着说着他就在电话里哭了起来,你知道的一个50多岁的中年秃顶男人哭起来的声音都多难听,所以我们也就勉为其难的暂且留着以后再说了。快用Banana,一起萌萌哒! 这是我的新浪微博:http://weibo.com/u/5140008714 有事千万别给我发邮件Email:bananacall@sina.com 新版特性 1.我们是一个很小的开发团队,小到现在都没有自己的办公室,没有自己的公司,没有自己的电脑,平时的维护和更新都是大家凑钱去网吧开一台电脑轮流使用完成的。没有您的支持,我们也不会把这款软件坚持下来,感恩感恩,感谢的就是您对我们的支持和帮助。 2.全新版本正在抓紧研发中,为此我们缩衣节食已经去网吧开了两台电脑加班加点的工作。在新版本上线之前,为了谢谢大家对banana的支持,我们将对老版本中的所有主题进行解锁处理,用于回馈您对我们的支持,一路走来,感谢有您!banana全体人员在此拜谢了,还希望您以后继续支持我们!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值