Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayList;
  5.  
  6. public class ds2 {
  7.  
  8. static int[] arrow;
  9.  
  10. static int findLeader(int person) {
  11. if (arrow[person] == person) {
  12. return person;
  13. }
  14. int nextPerson = arrow[person];
  15. int group = findLeader(nextPerson);
  16. arrow[person] = group;
  17. return group;
  18. }
  19.  
  20. static void combine(int person1, int person2) {
  21. int person1Leader = findLeader(person1);
  22. int person2Leader = findLeader(person2);
  23. arrow[person1Leader] = person2Leader;
  24. }
  25.  
  26. public static void main(String[] args) throws IOException {
  27. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  28.  
  29. String[] line = br.readLine().split(" ");
  30.  
  31. int n = Integer.parseInt(line[0]);
  32. int m = Integer.parseInt(line[1]);
  33.  
  34. // initializing disjoint set
  35. arrow = new int[n + 6];
  36. for (int i = 0; i < arrow.length; i++) {
  37. arrow[i] = i;
  38. }
  39.  
  40. ArrayList<Integer> answer = new ArrayList<Integer>();
  41.  
  42. // go through each edge
  43. for (int i = 0; i < m; i++) {
  44. line = br.readLine().split(" ");
  45. int a = Integer.parseInt(line[0]);
  46. int b = Integer.parseInt(line[1]);
  47.  
  48. int aLeader = findLeader(a);
  49. int bLeader = findLeader(b);
  50. if (aLeader == bLeader) {
  51. // skip
  52. } else {
  53. answer.add(i);
  54. combine(a, b);
  55. }
  56. }
  57.  
  58. // check answer
  59. if (answer.size() != n - 1) {
  60. // tree must have n-1
  61. System.out.println("Disconnected Graph");
  62. } else {
  63. for (int edge : answer) {
  64. System.out.println(edge + 1);
  65. }
  66. }
  67. }
  68.  
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement