Submission #666625


Source Code Expand

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;

public class Main {
    private static int N;
    private static int A;
    private static int[] X;
    private static int[] Y;
    private static int B;
    private static int[] U;
    private static int[] V;
    private static Map<Integer, TreeSet<Integer>> C = new HashMap();
    private static Map<Integer, TreeSet<Integer>> C2 = new HashMap();
    private static TreeSet<Integer> T = new TreeSet();

    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(in.readLine());
        for (int i = 1; i <= N; i++) {
            T.add(i);
        }
        A = Integer.parseInt(in.readLine());
        X = new int[A];
        Y = new int[A];
        for (int i = 0; i < A; i++) {
            String[] s = in.readLine().split(" ");
            X[i] = Integer.parseInt(s[0]);
            Y[i] = Integer.parseInt(s[1]);
            if (!C.containsKey(X[i])) {
                C.put(X[i], new TreeSet());
            }
            C.get(X[i]).add(Y[i]);
        }
        B = Integer.parseInt(in.readLine());
        U = new int[B];
        V = new int[B];
        for (int i = 0; i < B; i++) {
            String[] s = in.readLine().split(" ");
            U[i] = Integer.parseInt(s[0]);
            V[i] = Integer.parseInt(s[1]);
            if (!C2.containsKey(V[i])) {
                C2.put(V[i], new TreeSet());
            }
            C2.get(V[i]).add(U[i]);
        }
        int ans = 0;
        while (true) {
            boolean removed = false;
            for (Integer i : T) {
                if ((!C.containsKey(i) || C.get(i).size() == 0) && (!C2.containsKey(i) || C2.get(i).size() == 0)) {
                    T.remove(i);
                    C.remove(i);
                    C2.remove(i);
                    for (Map.Entry<Integer, TreeSet<Integer>> e : C.entrySet()) {
                        e.getValue().remove(i);
                    }
                    for (Map.Entry<Integer, TreeSet<Integer>> e : C2.entrySet()) {
                        e.getValue().remove(i);
                    }
                    ans++;
                    removed = true;
                    break;
                }
            }
            if (!removed) {
                if (C2.size() == 0) {
                    break;
                }
                int max = 0;
                int maxi = 0;
                for (Map.Entry<Integer, TreeSet<Integer>> e : C2.entrySet()) {
                    int k = e.getKey();
                    TreeSet<Integer> v = e.getValue();
                    if (max < v.size() + (C.containsKey(k) ? C.get(k).size() : 0)) {
                        max = v.size() + (C.containsKey(k) ? C.get(k).size() : 0);
                        maxi = k;
                    }
                }
                T.remove(maxi);
                C.remove(maxi);
                C2.remove(maxi);
                /**
                for (Map.Entry<Integer, TreeSet<Integer>> e : C.entrySet()) {
                    e.getValue().remove(maxi);
                }
                 **/
                for (Map.Entry<Integer, TreeSet<Integer>> e : C2.entrySet()) {
                    e.getValue().remove(maxi);
                }
            }
        }
        PrintWriter out = new PrintWriter(System.out);
        out.println(ans);
        out.flush();
    }
}

Submission Info

Submission Time
Task C - ぬりまーす
User ysd
Language Java8 (OpenJDK 1.8.0)
Score 0
Code Size 3636 Byte
Status WA
Exec Time 180 ms
Memory 8400 KiB

Compile Error

Note: ./Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 100
Status
AC × 4
WA × 1
AC × 17
WA × 12
Set Name Test Cases
Sample x_sample_1.txt, x_sample_2.txt, x_sample_3.txt, x_sample_4.txt, x_sample_5.txt
All corner1.txt, corner2.txt, corner3.txt, corner4.txt, manual1.txt, manual2.txt, manual3.txt, manual4.txt, manual5.txt, random1.txt, random10.txt, random11.txt, random12.txt, random13.txt, random14.txt, random15.txt, random2.txt, random3.txt, random4.txt, random5.txt, random6.txt, random7.txt, random8.txt, random9.txt, x_sample_1.txt, x_sample_2.txt, x_sample_3.txt, x_sample_4.txt, x_sample_5.txt
Case Name Status Exec Time Memory
corner1.txt WA 178 ms 8276 KiB
corner2.txt AC 171 ms 8400 KiB
corner3.txt AC 157 ms 8148 KiB
corner4.txt AC 177 ms 8268 KiB
manual1.txt AC 163 ms 8144 KiB
manual2.txt AC 171 ms 8276 KiB
manual3.txt AC 165 ms 8268 KiB
manual4.txt AC 159 ms 8148 KiB
manual5.txt AC 152 ms 8020 KiB
random1.txt WA 164 ms 8276 KiB
random10.txt WA 167 ms 8144 KiB
random11.txt WA 169 ms 8276 KiB
random12.txt WA 167 ms 8276 KiB
random13.txt AC 163 ms 8276 KiB
random14.txt AC 175 ms 8148 KiB
random15.txt AC 167 ms 8148 KiB
random2.txt AC 176 ms 8268 KiB
random3.txt WA 163 ms 8272 KiB
random4.txt AC 171 ms 8272 KiB
random5.txt WA 175 ms 8276 KiB
random6.txt WA 171 ms 8268 KiB
random7.txt WA 163 ms 8272 KiB
random8.txt WA 180 ms 8148 KiB
random9.txt WA 179 ms 8276 KiB
x_sample_1.txt AC 155 ms 8148 KiB
x_sample_2.txt WA 155 ms 8020 KiB
x_sample_3.txt AC 152 ms 8020 KiB
x_sample_4.txt AC 152 ms 8148 KiB
x_sample_5.txt AC 153 ms 8148 KiB