Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.util.ArrayList;
  7. import java.util.BitSet;
  8. import java.util.Deque;
  9. import java.util.LinkedList;
  10. import java.util.List;
  11. import java.util.StringTokenizer;
  12.  
  13. public class Main {
  14.  
  15. private static final int MAX_SIZE = 20000;
  16.  
  17. private static void bfs(int v, List<Integer>[] g, BitSet used, BitSet color, int[] sizes) {
  18. Deque<Integer> q = new LinkedList<>();
  19. q.addLast(v);
  20. used.set(v);
  21. while (!q.isEmpty()) {
  22. v = q.removeFirst();
  23. ++sizes[color.get(v) ? 1 : 0];
  24. for (int to: g[v]) {
  25. if (!used.get(to)) {
  26. used.set(to);
  27. color.set(to, !color.get(v));
  28. q.addLast(to);
  29. }
  30. }
  31. }
  32. }
  33.  
  34. public static void main(String[] args) {
  35. InputReader in = new InputReader(System.in);
  36. PrintWriter out = new PrintWriter(System.out);
  37. int t = in.nextInt(), n, u, v;
  38. for (int k = 1; k <= t; ++k) {
  39. System.gc();
  40. BitSet used = new BitSet(MAX_SIZE);
  41. BitSet arr = new BitSet(MAX_SIZE);
  42. BitSet color = new BitSet(MAX_SIZE);
  43. n = in.nextInt();
  44. List<Integer>[] g = new ArrayList[MAX_SIZE];
  45. for (int i = 0; i < MAX_SIZE; ++i) g[i] = new ArrayList<>();
  46. while (n-- > 0) {
  47. u = in.nextInt() - 1;
  48. v = in.nextInt() - 1;
  49. arr.set(u);
  50. arr.set(v);
  51. g[u].add(v);
  52. g[v].add(u);
  53. }
  54.  
  55. int ans = 0;
  56. for (int i = 0; i < MAX_SIZE; ++i) {
  57. if (!used.get(i) && arr.get(i)) {
  58. int[] sizes = {0, 0};
  59. bfs(i, g, used, color, sizes);
  60. ans += Math.max(sizes[0], sizes[1]);
  61. }
  62. }
  63. out.println("Case " + k + ": " + ans);
  64. }
  65. out.close();
  66. }
  67.  
  68. static class InputReader {
  69. public BufferedReader reader;
  70. public StringTokenizer tokenizer;
  71.  
  72. public InputReader(InputStream stream) {
  73. reader = new BufferedReader(new InputStreamReader(stream), 32768);
  74. tokenizer = null;
  75. }
  76.  
  77. public String next() {
  78. while (tokenizer == null || !tokenizer.hasMoreTokens()) {
  79. try {
  80. tokenizer = new StringTokenizer(reader.readLine());
  81. } catch (IOException e) {
  82. throw new RuntimeException(e);
  83. }
  84. }
  85. return tokenizer.nextToken();
  86. }
  87.  
  88. public int nextInt() {
  89. return Integer.parseInt(next());
  90. }
  91.  
  92. public long nextLong() {
  93. return Long.parseLong(next());
  94. }
  95. }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement