fork(1) download
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.*;
  5.  
  6. public class Main {
  7.  
  8. public static void main(String[] args) throws IOException {
  9. StringTokenizer tokenizer = new StringTokenizer(in.readLine());
  10. int n = Integer.parseInt(tokenizer.nextToken());
  11. int k = Integer.parseInt(tokenizer.nextToken());
  12. int[] cows = new int[n + 1];
  13. List<Integer>[] viewed = new List[n + 1];
  14. for (int j = 1; j <= n; j++) {
  15. cows[j] = j;
  16. viewed[j] = new ArrayList<>();
  17. viewed[j].add(j);
  18. }
  19. for (long t = 1; t <= k; t++) {
  20. tokenizer = new StringTokenizer(in.readLine());
  21. int a = Integer.parseInt(tokenizer.nextToken());
  22. int b = Integer.parseInt(tokenizer.nextToken());
  23. int c = cows[a];
  24. int d = cows[b];
  25. cows[a] = d;
  26. cows[b] = c;
  27. viewed[cows[a]].add(a);
  28. viewed[cows[b]].add(b);
  29. }
  30. int[] answer = new int[n + 1];
  31. for (int r = 1; r <= n; r++) {
  32. if (cows[r] != 0) {
  33. List<Integer> cycle = new ArrayList<>();
  34. int j = r;
  35. while (cows[j] != 0) {
  36. cycle.add(j);
  37. j = cows[j];
  38. cows[cycle.get(cycle.size() - 1)] = 0;
  39. }
  40. Set<Integer> viewedHere = new HashSet<>();
  41. for (int cow : cycle) {
  42. viewedHere.addAll(viewed[cow]);
  43. }
  44. for (int cow : cycle) {
  45. answer[cow] = viewedHere.size();
  46. }
  47. }
  48. }
  49. StringBuilder out = new StringBuilder();
  50. for (int j = 1; j <= n; j++) {
  51. out.append(answer[j]).append('\n');
  52. }
  53. System.out.print(out);
  54. }
  55. }
Success #stdin #stdout 0.07s 47252KB
stdin
5 4
1 3
1 2
2 3
2 4
stdout
4
4
3
4
1