题目解析
判断给定的两个物品同时拥有的人数
解题思路
模拟即可
存储每个人拥有的物品种类
然后在每个人拥有的物品种类中判断是否拥有指定的物品
最后输出人数即可
代码
import java.io.*;
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String[] args) throws IOException
{
int n = ini(), m = ini();
ArrayList<Integer> res[] = new ArrayList[n + 10]; // 存储每个人拥有的物品种类
for (int i = 1; i <= n; i++)
res[i] = new ArrayList<Integer>();
for (int i = 1; i <= n; i++)
{
int k = ini();
for (int j = 1; j <= k; j++)
{
int x = ini();
res[i].add(x); // 当前这个人增加新的物品种类
}
}
int q = ini();
while (q-- > 0)
{
int x = ini(), y = ini();
int ans = 0;
for (int i = 1; i <= n; i++)
{
int cnt = 0;
for (int j = 0; j < res[i].size(); j++)
{
int z = res[i].get(j); // 当前这个人的物品
if (z == x || z == y) // 当前物品是指定的
cnt++;
if (cnt == 2)
break;
}
if (cnt == 2) // 如果当前这个人同时拥有指定的两种物品
ans ++;
}
out.println(ans);
}
out.flush();
out.close();
}
static StreamTokenizer sc = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
static PrintWriter out = new PrintWriter(System.out);
static int ini() throws IOException
{
sc.nextToken();
return (int) sc.nval;
}
}