Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static class Solver
- {
- int t, n;
- Map<String, String[]> functions;
- Set<String> vars, found;
- InputReader in;
- OutputWriter out;
- void solve()
- {
- t = in.nextInt();
- for (int test = 1; test <= t; test++)
- {
- n = in.nextInt();
- functions = new HashMap<>(2 * n);
- vars = new HashSet<>();
- found = new HashSet<>();
- for (int i = 0; i < n; i++)
- {
- String[] tokens = in.nextLine().split("=");
- String[] params = tokens[1].substring(tokens[1].indexOf("(") + 1, tokens[1].indexOf(")")).split
- (",");
- if (params.length == 1 && params[0].length() == 0)
- found.add(tokens[0]);
- else
- {
- vars.add(tokens[0]);
- functions.put(tokens[0], params);
- }
- }
- boolean ans = true;
- while (vars.size() > 0)
- {
- boolean check = false;
- Iterator<String> iterator = vars.iterator();
- List<String> remove = new ArrayList<>();
- while (iterator.hasNext())
- {
- String curr = iterator.next();
- if (exist(functions.get(curr)))
- {
- remove.add(curr);
- functions.remove(curr);
- found.add(curr);
- check = true;
- }
- }
- for (int i = 0; i < remove.size(); i++)
- vars.remove(remove.get(i));
- if (!check)
- {
- ans = false;
- break;
- }
- }
- if (ans)
- out.println("Case #" + test + ": " + "GOOD");
- else
- out.println("Case #" + test + ": " + "BAD");
- }
- }
- boolean exist(String[] vars)
- {
- int len = vars.length;
- for (int i = 0; i < len; i++)
- if (!found.contains(vars[i]))
- return false;
- return true;
- }
- public Solver(InputReader in, OutputWriter out)
- {
- this.in = in;
- this.out = out;
- }
- }
Add Comment
Please, Sign In to add comment