Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javafx.util.Pair;
- import java.io.*;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.PriorityQueue;
- public class Cycles {
- private static int n;
- private static int m;
- private static HashMap<Integer, ArrayList<Integer>> S = new HashMap<>();
- private static ArrayList<Pair<Integer, Integer>> w = new ArrayList<>();
- private static HashMap<Integer, Integer> W = new HashMap<>();
- private static ArrayList<Pair<Integer, Integer>> s = new ArrayList<>();
- private static ArrayList<Integer> B = new ArrayList<>();
- public static void main(String[] args) throws IOException {
- File file = new File("cycles.in");
- FileReader fileReader = new FileReader(file);
- BufferedReader input = new BufferedReader(fileReader);
- File file2 = new File("cycles.out");
- FileWriter fileWriter = new FileWriter(file2);
- BufferedWriter output = new BufferedWriter(fileWriter);
- String[] nm = input.readLine().split(" ");
- n = Integer.parseInt(nm[0]);
- m = Integer.parseInt(nm[1]);
- String[] weight = input.readLine().split(" ");
- for (int i = 0; i < n; i++) {
- w.add(new Pair<>(i, Integer.parseInt(weight[i])));
- W.put(i, Integer.parseInt(weight[i]));
- }
- for (int i = 0; i < m; i++) {
- String[] s0 = input.readLine().split(" ");
- int l = Integer.parseInt(s0[0]);
- int c = 0;
- ArrayList<Integer> e = new ArrayList<>();
- for (int j = 0; j < l; j++) {
- int e0 = Integer.parseInt(s0[j + 1]);
- e.add(e0 - 1);
- c += (int) Math.pow(2, e0 - 1);
- }
- S.put(c, e);
- s.add(new Pair<>(c, e.size()));
- }
- w.sort((f, s) -> (s.getValue() - f.getValue()));
- boolean ok = true;
- long res = 0L;
- long tmp = 0L;
- int t = 0;
- while(ok) {
- tmp += (long) Math.pow(2, w.get(t).getKey());
- // System.out.println(w.get(t).getKey());
- for (Integer j : S.keySet()) {
- if (((~tmp) & j) == 0) {
- ok = false;
- break;
- }
- }
- if (ok) {
- res += W.get(w.get(t).getKey());
- }
- t++;
- }
- output.write(Long.toString(res));
- output.close();
- input.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement