版权声明:但行好事,莫问前程。 https://blog.csdn.net/Li_Hongcheng/article/details/81916007
#include<bits/stdc++.h>
using namespace std;
int num=-1e9;
struct node
{
int x,y;
} stu[55];
int cmp(node a,node b)
{
if(a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
vector<int>v1[55];
vector<int>v2[55];
int n,m;
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++)
{
int a,b;
scanf("%d%d",&a,&b);
v1[a].push_back(b);
num=max(a,num);
}
for(int i=0; i<m; i++)
{
int a,b;
scanf("%d%d",&a,&b);
v2[a].push_back(b);
}
int cnt=0;
for(int i=1; i<=num; i++)
{
for(int j=0; j<v1[i].size(); j++)
{
int t=v1[i][j];
for(int k=0; k<v2[t].size(); k++)
{
stu[cnt].x=i;
stu[cnt].y=v2[t][k];
cnt++;
}
}
}
sort(stu,stu+cnt,cmp);
for(int i=0; i<cnt-1; i++)
{
if(stu[i].x==stu[i+1].x&&stu[i].y==stu[i+1].y)
{
stu[i].x=0;
}
}
for(int i=0; i<cnt; i++)
{
if(stu[i].x)
printf("%d %d\n",stu[i].x,stu[i].y);
}
printf("\n");
}
}