/* * Solution to 2019 USACO January Bronze Problem: Guess the Animal */ import java.io.*; import java.util.*; class guess { public static void main (String [] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(System.out); StringTokenizer st; st = new StringTokenizer(in.readLine()); int N = Integer.parseInt(st.nextToken()); // out.println(N); // DEBUG PRINT ArrayList<HashSet<String>> list = new ArrayList<HashSet<String>>(); for (int i=0; i<N; i++) { st = new StringTokenizer(in.readLine()); String name = st.nextToken(); int nqualities = Integer.parseInt(st.nextToken()); // out.println(name + " " + nqualities); // DEBUG PRINT HashSet<String> tempset = new HashSet<String>(); for (int j=0; j<nqualities; j++) { tempset.add(st.nextToken()); } list.add(tempset); } // out.println(list.toString()); // DEBUG PRINT int maxoverlap = 0; for (int i=0; i<N; i++) { for (int j=i+1; j<N; j++) { // make a copy of the HashSet at list.get(i) // because retainAll is destructive, // want to keep list intact HashSet<String> intersection = new HashSet<String>(list.get(i)); intersection.retainAll(list.get(j)); int overlap = intersection.size(); if (overlap>maxoverlap) { maxoverlap = overlap; } // out.println(i + " " + j + " " + intersection.toString() + " " + overlap); // DEBUG PRINT } } int answer = maxoverlap+1; out.println(answer); // out.println(list.toString()); // DEBUG PRINT out.close(); } }
Sunday, November 7, 2021
USACO "Guess The Animal" Java Solution
Subscribe to:
Comments (Atom)